| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- BFS
- 크롤링
- dau 3만명
- 프로그래머스
- 아키텍쳐 개선
- 알람시스템
- 누적합
- 셀러리
- 몽고 인덱스
- 502오류
- docker
- 디버깅
- JPA
- 추천 검색 기능
- 베타적락
- 구현
- 완전탐색
- ipo 매매자동화
- TLS협상오류
- AWS
- 관측가능성
- ALB 502 BadGateway
- 결제서비스
- gRPC
- 이분탐색
- next-stock
- 백그라운드시 연결안됨
- 쿠키
- 카카오
- 백준
- Today
- Total
목록개발 (140)
코딩관계론
최근 프로젝트에서 Kubernetes 환경에서 동시성을 극대화하기 위해 AWS Lambda를 도입했습니다. 하지만 Lambda로 분리된 워크로드 때문에 로그가 누락되면서 서버 전 구간의 추적성이 떨어지는 문제가 발생했습니다. 처음에는 오픈텔레메트리 프로토콜을 사용해서 간단히 traceparent 헤더만 전달하면 될 것으로 생각했지만, 실제로는 Lambda의 serverless-express에서는 AsyncLocalStorage 전파가 끊기게 되면서 전구간으로 이어지지 않는 문제가 발생했습니다.이 글에서는 이러한 문제를 해결하기 위해 제가 시도했던 방법과 그 과정에서 얻은 인사이트를 공유합니다. OpenTelemetry instrumentation을 활용해 trace ID를 로그에 삽입하는 방법과, Lam..
1. 문제 현상회원가입 전환율이 약 10% 하락하는 현상이 발생하였다.로그 분석 결과, 인증률 하락 시점부터 502 Bad Gateway 오류 발생 건수가 급격히 증가하는 상관관계를 확인하였다.실제 회원가입 절차를 수행하면 일정 확률로 502 응답이 반환되는 현상이 재현되었다.결과적으로 다음과 같은 인과 관계가 의심되었다. 가입자 하락 → 인증 실패 증가 → 502 오류 다발 2. 원인 탐색 방향502 오류는 “게이트웨이(중간 서버, 예: ALB)가 백엔드 서버로부터 정상적인 응답을 받지 못했을 때” 발생한다.AWS 공식 문서(참고 링크)에 따르면,Application Load Balancer(ALB) 기준에서 502 오류는 다음 세 가지 구간에서 발생할 수 있다.Pod(백엔드 서버)가 직접 502를 ..
최근 관측 가능성(Observability) 관련 서적을 읽으면서, 회사의 알람 시스템을 전면 개선하기로 결심했습니다.관측 가능성의 핵심은 로그, 메트릭, 트레이스를 상관관계로 연결하여 근본 원인을 빠르게 파악할 수 있는 시스템을 구축하는 것입니다.문제 상황입사 당시 회사에는 중앙집중형 로그 시스템만 존재했고, 그 외의 모니터링·알람 체계는 사실상 없었습니다. 그 결과 장애 발생 시, 개발자가 먼저 감지하는 것이 아니라 고객 문의 -> 실무자가 문제임을 인지 -> 개발자에게 보고하는 형식으로 되어 있었습니다.이 구조에서는 실무자의 인지 시간 + 개발자의 문제 해결 시간이 그대로 MTTR(Mean Time To Recovery)에 반영됩니다.실제로는 한 달 이상 지속된 버그가 뒤늦게 발견되는 사례도 있었..
문제 이해하기비밀 코드는 1 ~ n 사이의 서로 다른 5개의 수로 구성된 오름차순 조합입니다.총 m번의 시도를 통해 비밀 코드를 추측할 수 있으며, 매 시도마다 서로 다른 5개의 수를 입력합니다.시스템은 각 시도에 대해, 입력값 중 몇 개가 비밀 코드에 포함되어 있는지를 알려줍니다.예를 들어, 비밀 코드가 [3, 5, 7, 9, 10]이고우리가 [1, 2, 3, 4, 5]를 입력했다면,겹치는 수는 3과 5, 총 2개이므로 시스템은 2를 응답합니다문제 해결 방법 설명하기가능한 모든 5개 조합을 생성합니다. (1 ~ n 중 5개 선택)각 조합이 모든 시도의 결과와 정확히 일치하는지 확인합니다.조건을 모두 만족하는 조합만을 필터링하여 개수를 셉니다.코드function getCombinations(arr, se..
서론고객에게 환급금을 정확히 돌려주기 위해서는 체크리스트 설문이 필요합니다. 이 설문은 단순히 선택만 하는 게 아니라, 스프레드시트에 응답을 저장하고, 이를 분석해 결과를 추론하는 복합적인 로직을 포함하고 있습니다. 이 전체 과정에는 20초 정도의 시간이 걸리게 되기 때문에 이 과정을 처음 설계할 때부터 “이건 절대 동기식으로 처리하면 안 되겠다”고 판단했습니다. 왜 동기로 짜면 안 되는지, 설계 전부터 예측했습니다당시 처리 대상은 3만 명이 넘는 사용자였고, 이 설문은 퇴근 직후, 특정 시간대에 몰리는 트래픽 특성을 갖고 있었습니다. 문제는 이 흐름이 아래와 같다는 점입니다단순히 생각해도,20초 동안 핸들러가 점유되면?수천 명이 동시에 들어오면?스레드 풀 / 이벤트 루프는 버텨줄 수 있을까?라는 질문이..
회사에서 홈택스 데이터를 스크래핑하는 일을 맡았다. 사용자에게 제공해야 하는 세금 정보는 크게 두 가지, **세와 **세. 문제는 이 두 스크래핑이 동시에 실행되면 서로의 세션을 덮어쓰는 문제가 발생한다는 점이었다. 세션 충돌은 곧 사용자 경험의 악화로 이어지고, 안정성이 생명인 서비스에서는 반드시 해결해야 할 사안이었다.[Z5004]: [LOGIN-999] 통합인증(중복 로그인) 오류입니다. 그래서 선택한 해법이 Redis 기반의 분산락이었다. 우리 회사 인프라는 AWS의 관리형 ElastiCache를 사용하고 있고, Latency 측면에서도 EKS 내에서의 접근이라 꽤 빠른 편이었다. 처음에는 Redis I/O 비용을 줄이자는 생각으로. 락 획득 여부를 Redis에 일일이 물어보는 대신, 로컬 메모리..
최근 업무 중 특정 기능 업데이트 이후 데이터베이스에서 예상치 못한 빈도의 Lock Raise 오류가 발생하였다. 장애 현상은 다음과 같은 트랜잭션 간 경쟁 상황에서 비롯되었다. 이러한 상황에서 발생하는 락과 이를 해결하기 위한 전략에 대해 정리하고자 한다.장애 현상트랜잭션 A가 특정 행(ROW1)에 대한 업데이트를 수행하며 배타적 락(Exclusive Lock)을 획득했다.트랜잭션 A가 완료되지 않은 상태에서 트랜잭션 B가 같은 행(ROW1)에 대한 업데이트를 시도하면서 락 충돌(Lock conflict)이 발생하여 오류가 발생했다. 배타적 락(Exclusive Lock, X-Lock)먼저 이 문제를 해결하기 위해선 배타적 락 대해서 알아야 한다. 배타적 락은 데이터 변경 작업을 수행할 때 발생하는 락..
문제 이해하기next 연산이 있을 시 + 10초 prev 연산이 있을 시 - 10초 다만 최소 0초에서 최대 video_len 까지만 이동이 가능함오프닝 구간에 있을 경우에는 오프닝의 마지막 시간으로 이동해야 한다.문제 해결 방법 설명하기1. 초로 통일 코드function changeSec(time){ let [min, sec] = time.split(':').map(Number) return min * 60 + sec}function secToMin(time){ min = Math.floor(time / 60) sec = time % 60 if(min 코드 리뷰function toSeconds(time) { const [minute, second] = time.split(..
1. 문제 이해하기게임 속 "붉대 감기" 기술은 일정 시간 동안 체력을 회복하는 스킬입니다. 주요 규칙은 다음과 같습니다:기본 회복: 매 1초마다 정해지는 양(x)만큼 체력을 회복합니다.연속 성공 보너스: t초 동안 끊기지 않고 성공하면 추가 회복량(y)이 더합됩니다.기술 취소: 목시터에게 공격받으면 붉대 감기가 즉시 취소되며, 공격받는 순간에는 회복을 할 수 없습니다.체력 한계: 체력은 최대 체력을 넘어서 회복할 수 없습니다.사망 조건: 체력이 0 이하로 떠나면 캐릭터가 죽습니다.📌 문제 링크 바로 가기2. 문제 해결 방법해결 해적은 목시터 공격 간격을 계산해서 그 사이에 체력을 얼마나 회복할 수 있는지를 구하는 것입니다.현재 시간과 다음 공격 시간사이에 회복할 수 있는 시간을 구합니다.회복 공식은 ..
오늘은 뉴스 데이터에서 자동으로 유용한 정보를 찾아주는 시스템을 구축하면서, 저희 팀이 고민했던 기술적인 문제들과 그 문제들을 해결한 과정을 공유하려고 합니다. 특히 이 과정에서 사용한 AI 기술들, 그리고 분산 환경에서 데이터의 일관성을 지키기 위해 했던 노력들을 쉽게 풀어서 설명해 드리겠습니다.1. 뉴스 데이터에서 자동으로 '인사이트'를 추출하기 위해 고려한 기술들저희가 만들고자 했던 시스템은 하루에도 수백, 수천 개씩 쏟아지는 뉴스 중에서 중요한 정보(인사이트)를 자동으로 발견하고 요약해주는 역할을 합니다. 사람이 모든 뉴스를 직접 읽고 평가할 수는 없으니까, 이를 돕는 AI 시스템을 설계하기로 했습니다.이 과정에서 중요한 기술적 결정을 내렸던 부분은 다음과 같습니다:LangGraph라는 도구를 사..
왜 프로그래매틱 SEO인가?웹사이트를 만든 후 한동안 방문자가 적어 “어떻게 하면 사이트 홍보가 잘될까?” 하고 고민할 때, 저는 우연히 읽은 한 권의 책에서 해답을 찾았습니다. 바로 SEO(검색 엔진 최적화) 였죠.일반적으로 SEO라 하면 페이지 타이틀, 메타 태그, 사이트 최적화 등 기초 테크닉과 함께 ‘백링크’(외부 사이트에서 내 사이트로 연결되는 링크) 전략이 대표적입니다. 저 역시 백링크 확보부터 시작했지만, 링크-building은 계속 꾸준히 해주지 않으면 효과가 떨어진다는 단점이 있었습니다.그 후 더 효율적인 대안을 찾기 위해 책을 읽던 중, 눈에 띈 개념이 바로 프로그래매틱 SEO였습니다.프로그래매틱 SEO의 원리와 장점프로그래매틱 SEO는 여러 페이지를 자동으로 생성하여 검색 노출을 극대..