전체 글
MySQL 1242 서브쿼리 2행 반환, 조인키 1:N이 원인
실무에서 겪은 경험SUMMARY · 3줄 요약현상정산완료·반려 조회 시 일부 주문 500원인환불 주문이 주문번호로 2행 조회됨해결결제번호로 조인해 오류 해소🧭 먼저, 이 글의 배경이커머스 서비스에서 판매자(입점사)가 주문목록을 기간 조건으로 조회할 때 생긴 오류이해에 필요한 데이터는 3가지주문: 주문 1건, 이름표는 주문번호(order_no)결제: 소비자가 결제할 때 만들어지는 행, 이름표는 결제번호(payment_sn)정산매출: 결제 1건마다 배치가 만들어 두는 정산용 행, 결제번호가 곧 PK이고 정산월이 붙음정상 주문은 결제 1행, 정산매출 1행으로 이어짐주문목록의 기간 조건은 정산대기·정산확인·정산완료·정산반려 중 하나를 골라 조회🔁 주문 1건이 결제 2건이 되는 이유: 환불환불이 발생하면 결제..
MyBatis out of range 에러, 주석 속 #{}가 원인
실무에서 겪은 경험SUMMARY · 3줄 요약현상재빌드 후 로그인 전면 불가원인주석 속 #{}로 placeholder 개수 불일치해결주석에서 #{} 표기 사용 금지🚀 증상매퍼 XML 정리 후 재빌드하자 로그인 전면 불가로그인 쿼리 실행 시 예외 발생Could not set parameters for mapping: ParameterMapping{property='pw', ...}Cause: org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2파라미터 수 불일치처럼 보이나, SQL 본문의 #{} 개수와는 일치영향: 로그인 API 전체 실패, 화면 진입 불가(P0)🧐 원인: 주석을 다르게 취급..
nginx 502 원인: 임시포트 고갈과 keepalive 설정
실무에서 겪은 경험SUMMARY · 3줄 요약현상부하 시 502, 앱 로그는 정상원인keepalive 미설정으로 임시포트 고갈해결upstream keepalive 적용, 502 0건🚀 증상부하테스트 중 가상 사용자(VU) 20명 초과 시점부터 502 Bad Gateway 발생특정 URL이 아닌 정적 파일 포함 전 URL에 무작위 분포백엔드 애플리케이션 로그 정상 (에러 미기록)일 502 약 6,000건 누적앱이 502를 인증 실패로 오분류 → 사용자 강제 로그아웃 부작용 발생판단: 앱 로그에 에러가 없는 502는 요청이 앱에 도달하기 전 nginx 단계에서 실패한 것🧐 원인 3중 구조원인은 한 가지가 아닌 3중 구조순서원인502의 직접 원인?1요청마다 공개키 원격 조회(캐시 없음) → 단일 프로세스 ..
AWS TechCamp란?
최근 AWS Builders Korea Program이 새롭게 변화한 AWS TechCamp에 참여하면서 느낀 점을 공유하고자 한다.기존 프로그램에서는 이론과 간단한 실습을 중심으로 진행되었지만, 이번 테크캠프는 한층 더 강화된 학습 경험을 제공했다.실시간으로 과외를 받는 듯한 몰입감이 느껴졌고, AWS 서비스를 깊이 이해하고 실전에서 바로 적용해보고 싶다는 열정이 생겼다. 어떻게 진행되나요?TechCamp는 분기별로 3일간의 세션으로 구성된다.매년 3월(Modern App), 6월(AI/ML), 9월(Data), 11월(Every App)을 주제로 진행된다.하루 두 번, 오전 9~12시, 오후 2~5시까지 강의가 열린다.강의는 기초 과정 (레벨 100), 기본 과정 (레벨 100 - 200) , 심화..
빅데이터의 파일 형식은 무엇으로 해야할까? (feat. Parquet 란?)
데이터 엔지니어 프로젝트를 진행하면서 컬럼이 수십개에 레코드는 수십만개의 데이터를 다루면서 데이터 유형에 대해 고민하게 되었다. 단순히 보기 편하고 다루기 쉬운 행 기반 형식의 CSV 파일만을 생각했는데 읽고 쓰는 I/O 성능이 느려서 새로운 파일 유형을 찾게 되었다. 그것이 parquet 같은 빅데이터 파일 형식이다. 1. 고민해야할 점데이터가 기하급수적으로 증가함에 따라 효율적인 데이터 저장방법은 무엇일까?데이터를 행과 열로 구성하는 것의 차이점과 이것이 저장 및 쿼리 효율성에 어떤 영향을 미칠까?행 기반 형식으로 데이터를 저장하는 것의 장단점과 쓰기 작업이 많은 작업에 대한 적합성은 무엇일까?빠른 쿼리 속도와 효율적인 압축 옵션 등 읽기 작업이 많은 작업을 위한 열(컬럼) 기반 저장소의 이점은?Pa..
Airflow 란 무엇인가?
1. Airflow 소개파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크Airbnb에서 시작한 아파치 오픈소스 프로젝트가장 많이 사용되는 데이터 파이프라인 관리 및 작성 프레임워크데이터 파이프라인 스케줄링 지원정해진 시간에 ETL 실행 or 한 ETL의 실행이 끝나면 다음 ETL 실행웹 UI 제공데이터 파이프라인(ETL)을 쉽게 만들 수 있게 해줌다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공https://airflow.apache.org/docs/데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름1개의 DAG는 1개 이상의 태스크(task)로 구성 2. Airflow 구성웹 서버(Web Server)웹 UI는 스케줄러와 DAG의 실행 상황을 시각화해줌..
Airflow 설치 - Docker
Apache Airflow 공식 홈페이지 - Running Airflow in Docker 에서 참고하였습니다. 1. 시작 전 (Before you begin)Docker Community Edition(CE)을 본인 컴퓨터에 설치합니다. OS에 따라 Airflow 컨테이너가 제대로 실행되려면 최소 4.00GB에서 권장 8.00GB 메모리를 사용하도록 Docker를 구성해야 합니다. 자세한 내용은 Windows Docker 또는 Mac Docker 를 참고하세요.컴퓨터에 Docker Compose v2.14.0 이상 설치해야 합니다. 버전을 확인하려면 `docker compose version` 명령어를 실행하세요.% docker compose versionDocker Compose version v2...
CodeDeploy - CodePipeline 만드는 도중 실패 및 설명
1. 실패 이유 스프링부트 프로젝트 최상단에 appspec.yml 파일을 만들지 않아서 Deploy가 실패했다.appspec.yml은 CodeDeploy에서 배포 관리하는데 사용하는 파일이다.이 파일에 정의된 일련의 수명 주기(lifecycle) 이벤트 후크로 각 배포를 관리하는데 사용된다.AWS 공식문서 - CodeDeploy 애플리케이션 사양 (AppSpec) 파일 을 참고하면 좋다. 2. appspec.yml 생성위 규칙대로 정의를 하면 되고, 나는 크게 정의할 필요가 없기에 간단하게 적어본다. 이렇게 생성 후 Github에 추가하면 자동으로 우리가 만들었던 CodePipeline이 작동한다.그럼 Source -> Build -> Deploy 가 자동으로 실행하게 된다. 3. 성공나는 codepip..