왜 롤백이 되었을까
문제 상황 로컬 환경에서 할일 알림이 DB에 저장되지 않는 문제가 발생했습니다. 신기하게도 DEV, PROD 환경에서는 정상적으로 동작하고 있었고, 최신 DB 스냅샷과 dev 브랜치로 업데이트해도 문제가 지속되었습니다. 디버깅 과정 먼저 디버거를 통해 데이터 흐름을 확인했습니다. 디버깅 결과 데이터가 정상적으로 저장되는 것을 확인할 수 있...
문제 상황 로컬 환경에서 할일 알림이 DB에 저장되지 않는 문제가 발생했습니다. 신기하게도 DEV, PROD 환경에서는 정상적으로 동작하고 있었고, 최신 DB 스냅샷과 dev 브랜치로 업데이트해도 문제가 지속되었습니다. 디버깅 과정 먼저 디버거를 통해 데이터 흐름을 확인했습니다. 디버깅 결과 데이터가 정상적으로 저장되는 것을 확인할 수 있...
들어가며 서비스를 운영하면서 크고 작은 장애들을 경험했다. 처음엔 당황스러웠지만, 이제는 어느 정도 패턴이 보이기 시작했다. 특히 “코드를 어느 계층에서 수정해야 할까?”라는 고민이 가장 어려웠는데, 나름의 판단 기준을 정리해보고자 한다. 주요 장애 유형 지금까지 경험한 장애 유형들이다. 비즈니스 로직 오류 (70%) - VOC, QA...
6개월간의 취준 끝. 2024년 8월 초부터 12월까지 flab 멘토링을 들은 후, 4월까지 취준을 마치고 원하는 조건들을 갖춘 서비스회사에 인턴을 시작했다. flab이 개발 방향을 잡는데에 가장 큰 역할을 했기에, 오랜만에 회고를 해보려한다. 멘토링을 시작하게 된 계기 나는 예전부터 멘토링 방식의 학습을 선호해왔다. 학교 멘토링 프로그램이나 개...
리팩토링을 시작하게 된 배경 오래된 제 코드를 살펴보면서 리팩토링의 필요성을 느꼈습니다. 리팩토링을 하려는 이유는 숨겨진 버그나 취약점을 발견하고 수정하기 위함과 가독성을 높여 확장성을 향상시키기 위함 입니다. 리팩토링을 시작하려 했지만, 오래된 코드의 내용이 기억나지 않아서 먼저 코드를 보면서 어떤 요구사항이고 도메인이었는지 떠올려야 했습니다. ...
Step1. ngram parser로 문서 토큰화 문서 텍스트를 n-gram 단위로 분리 N-gram Parser가 각 토큰을 생성 각 토큰의 문서 내 위치 정보 기록 Step2. 메모리 캐시 단계 (FTS 캐시) 생성된 토큰을 R-B 트리에 저장 각 토큰마다 문서 ID와 위치 정보를 역인덱스 형태로 관리 같은 ...
ngram parser 소스코드 링크 while (next < end) { char_len = my_mbcharlen_ptr(cs, next, end); /* Skip the rest of the doc if invalid char. */ if (next + char_len > end || char_len == 0) { break;...
MySQL ngram parser 기본 개념 및 사용법 MySQL의 Full-Text Ngram Parser는 텍스트 데이터를 효율적으로 검색하기 위해 사용되는 내장 파서로, 특히 한국어, 일본어, 중국어(CJK)와 같은 언어에서 강력한 성능을 발휘합니다. 이는 단어를 고정된 크기의 문자 시퀀스(ngram)로 분해하여 검색을 수행합니다. 주요 특징...
기능 요구사항 관리자는 이메일 주소를 입력하여 새로운 멤버를 초대할 수 있습니다. 초대 이메일은 지정된 템플릿 형식으로 발송되어야 합니다. 초대 링크는 10분간 유효합니다. 초대 링크는 1회만 사용가능합니다. 만료되거나 사용된 초대 링크는 더 이상 사용할 수 없습니다. 비기능 요구사항 초대 링크는 추측할 수 없는 안전한...
장애 상황 이슈 생성 API의 부하 테스트를 통해 안정적인 서비스 제공과 우수한 성능을 달성하는 것을 목표로 설정했습니다. 그러기 위해서 대규모 조직(1000명 이상)에서 50~100명의 사용자가 동시에 이슈를 생성하는 상황을 가정했을 때, 다음과 같이 요청-응답 시간(MTT)은 1~2초 이내, TPS는 30~40, 에러율은 0.1% 이하, 테스트...
Redis 버전 7.0.15 기준으로 설명합니다. Redis Master Slave Architecture 기본적인 Redis Replication 구조는 Master-Replica 구조로 이루어져 있습니다. Master는 데이터를 저장하고, Replica는 Master의 데이터를 복제합니다. 레디스는 비동기(asynchronous...