일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- dau 3만명
- 몽고 인덱스
- docker
- BFS
- AWS
- 디버깅
- 카카오
- spring event
- piplining
- 결제서비스
- ai agent
- 프로그래머스
- ipo 매매자동화
- 누적합
- 크롤링
- 알람시스템
- 관측가능성
- 구현
- 아키텍쳐 개선
- JPA
- next-stock
- 완전탐색
- 백준
- 쿠키
- 추천 검색 기능
- gRPC
- 셀러리
- 베타적락
- langgraph
- 이분탐색
- Today
- Total
목록전체 글 (190)
코딩관계론
대어 IPO(리브스메드) 위에 정책펀드 앵커(산은 2,000억, GP 유력)가 ‘확실성의 바닥’을 깔고, 오픈엣지 고수익 회수가 신뢰를 더하는 이벤트 드리븐형 VC주입니다.전략은 간단히: 재료 공백기 분할 매수 → 공식 이벤트 전·후 분할 청산 → 동종 분산으로 테마 리스크 관리. 1) 왜 지금 SBV인가 — ‘3중 촉매’의 실체 ① 리브스메드 IPO(대어)2025년 5월 코스닥 상장예비심사 청구 완료. 기술특례 루트와 조(兆) 단위 밸류 기대가 보도되었습니다.확인용: KRX 캘린더, 38커뮤니케이션, 주요 경제지 기사 등. ② 산은 ‘AI 코리아펀드’(중형 2,000억) 앵커스톤브릿지벤처스(SBV)가 단독지원·서류 통과로 GP 선정 유력(업계 보도). 선정 시 산은 30% 앵커(600억), 9개월 내 ..

최근 관측 가능성(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는 여러 페이지를 자동으로 생성하여 검색 노출을 극대..
1. “회원가입, 충분히 만들 수 있지 않아?”라는 의문에서 시작프로젝트 초기에 “그냥 회원가입 로직을 하나 만든 후, 이메일/패스워드(암호화)를 DB에 저장하면 되지 않을까?”라고 생각했습니다. 사실 기능적으로는 문제될 것이 없어 보였습니다.기본 로직:사용자가 가입 폼에서 이메일+비밀번호를 입력서버가 DB에 사용자 정보를 저장로그인 시 입력받은 정보와 비교세션 or JWT 발행하여 인증 처리이 구조는 백엔드 개발자라면 누구나 손쉽게 구축할 수 있습니다. 그런데 사이트를 운영하면서 계속 생각해보니, 서비스 입장에서야 간단하지만 사용자 입장에선 어떨까? 하는 의문이 생겨나기 시작했습니다. 2. 사용자는 새 사이트에 정보 제공하기가 꺼림칙하다아무리 제가 만든 사이트라고 해도, 사용자 입장에서는 “이 서비스가..