분류 전체보기236 복합 인덱스 설계 스터디 노트: 개념부터 실전까지 한 번에 다 정리! SQL Booster라는 책을 읽으며 복합 인덱스 설계를 공부하다가잘 이해가 가지 않는 부분을 완벽하게 이해가 갈 때까지 나노단위로 쪼개서 모든 개념을 정복한 후 남기는 스터디 노트이다카디널리티와 셀렉티비티(선택도)의 개념도 구분해서 이해되게 정리하고레코드 읽는 부분도 잘 이해가 가지 않으면 모두 시각화하여 이해가 잘 가도록 정리했다복합 인덱스 접근 과정 설명B-Tree 인덱스의 기본 구조B-Tree 인덱스는 루트 노드, 브랜치 노드, 리프 노드로 구성됨데이터베이스가 인덱스를 이용해 데이터를 찾는 과정은 다음과 같다루트 노드에서 시작브랜치 노드를 통해 리프 노드로 이동리프 노드에서 필요한 데이터를 스캔리프 노드의 RID(Row Identifier)를 이용해 실제 테이블 데이터에 접근인덱스 내부 동작 원리.. 2026. 2. 1. 2025년 회고 스터디알고리즘 스터디올해는 알고리즘 스터디를 여러 개 진행했다.알고리즘을 시간 내에 푸는 훈련을 매일 하며 남들이 어떻게 푸는지 보는 것도 나름의 의미가 있었지만, 가장 도움이 된 건 내가 왜 이 알고리즘을 선택했고 왜 이렇게 풀었는지 남에게 설명하는 능력이 늘어난 점이었다.내가 암묵적으로 넘어가던 부분들을 다른 사람들이 질문했고, 그걸 말로 풀어내다 보니 면접이나 협업하는 상황에서도 내 코드의 의도를 더 잘 설명할 수 있어진 것 같다고 느낀다.알고리즘 스터디지만 커뮤니케이션 스킬의 성장을 체감했다.우먼잇츠스터디: 가상 면접 사례로 배우는 대규모 시스템 설계 영어면접 스터디가상 면접 사례로 배우는 대규모 시스템 설계 책이 공부하고 싶기도 했고 영어면접 준비에도 관심이 있어서 두 가지를 동시에 하는 스터디.. 2026. 1. 27. IntelliJ에서 Git 계정 분리하여 여러개 사용하기 회사에서 사내망 프로젝트만 진행하다가 사외망 프로젝트를 진행하게 되어 외부망 깃 계정을 만들었다.문제는 내 맥북의 인텔리제이에서 개인 Git을 로그아웃하지 않고 두개를 동시에 쓰고 싶었다는 점이다.그리고 회사 프로젝트에 개인 계정으로 커밋 잘못 하는 일을 막고싶었다….(한 번 실수했다)1. clone 분리1-1. 키 생성하기터미널에 다음을 입력한다.개인용 키ssh-keygen -t rsa -b 4096 -C "[personal_email@example.com]()" -f ~/.ssh/id_rsa_github_personal회사용 키ssh-keygen -t rsa -b 4096 -C "[work_email@example.com]()" -f ~/.ssh/id_rsa_github_work1-2. 키 파일 확인.. 2025. 10. 29. DB서버 병목 장애 해결기: 5시간 배치를 5분으로 만들기 *보안을 준수하기 위해 각종 명칭은 모두 디저트 명으로 대체했다문제 상황맡은지 한 달이 된 서비스에서 daily batch 작업 실행 중 심각한 DB 서버 병목 현상이 발생해 서비스 장애로 이어졌다.증상특정 쿼리가 5시간 동안 실행되며 결과를 반환하지 않음후속 작업들이 대기 상태로 멈춰 batch 프로세스 전체가 중단해당 프로세스 이후의 데이터 처리 파이프라인 진행 모두 중단쿼리 자체는 기존과 동일했으나, 서버 재구축 이후 성능이 급격히 저하pid | usename | application_name | client_addr | duration | state | query_preview-------+------------+------------------.. 2025. 10. 26. [Design Pattern]빌더 패턴 적용 회고: 희망편과 절망편 빌더 패턴(Builder Pattern) 적용 회고: 희망편과 절망편1. 빌더 패턴은 만능일까?복잡한 객체를 만들 때 자주 언급되는 빌더 패턴.하지만 이 패턴이 언제나 좋은 설계를 보장하지는 않는다는걸 프로젝트에 세번정도 빌더 패턴을 적용해보다가 깨달았다.실제로 내가 프로젝트에서 빌더 패턴, 특히 디렉터(Director)를 도입하면서 겪은 희망편과 절망편을 회고해보려고 한다.디렉터를 쓰는 게 좋았던 경우디렉터의 사용이 오히려 복잡도만 올렸던 경우2. 패턴 요약 및 배경빌더 패턴 구조 요약Builder: 제품의 각 부분 생성 인터페이스ConcreteBuilder: 구체적으로 제품 생성 방법 구현Director: Builder를 조합해 객체 생성 과정을 관리Product: 최종 결과물적용 배경공통되고 복잡한.. 2025. 5. 19. [프로그래머스] 충돌위험 찾기 문제 주소https://school.programmers.co.kr/learn/courses/30/lessons/340211 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명문제 설명어떤 물류 센터는 로봇을 이용한 자동 운송 시스템을 운영합니다. 운송 시스템이 작동하는 규칙은 다음과 같습니다.물류 센터에는 (r, c)와 같이 2차원 좌표로 나타낼 수 있는 n개의 포인트가 존재합니다. 각 포인트는 1~n까지의 서로 다른 번호를 가집니다.로봇마다 정해진 운송 경로가 존재합니다. 운송 경로는 m개의 포인트로 구성되고 로봇은 첫 포인트에서 시작해 할당된 포인트를 순서대로 방문합니다.운송 시스템에 사용되.. 2025. 3. 13. [Open Search] OpenSearch text/keyword 매핑 차이로 인한 검색 오류 해결기 스터디 일정이 있어서 일찍 퇴근한 나는 내가 개발한 로그 페이지에 결과가 출력되지 않는다는 과장님의 카톡을 받게 된다.다음날 아침 일찍부터 출근해서 문제를 파악해 보았다. 우리팀은 tts, stt, 대화엔진 등 여러 시스템을 거칠때마다 로그를 남긴다.각 서비스간 연동 로그를 OpenSearch에서 조회해서 유의미한 정보로 가공한 후 스프링으로 백엔드 api를 구현하고 리액트로 프론트단까지 구현하는게 내 업무였다. 분명히 정말 동일한 코드로 생성된 동일한 쿼리가 날아가는데왜 TB 환경에서는 되고 STG 환경에서는 되지 않는지 고민을 시작했다. OpenSearch dashboard의 dev tools를 켜고 쿼리가 왜 안 되는지 조건을 하나씩 빼면서 실행해보았다 ```GET project_name_log_*.. 2025. 2. 18. @Slf4j = Facade 패턴 + Service Locator 패턴 나는 항상 로그를 찍을때 이렇게 Logger를 클래스 최상단에 생성한 후 이용해 왔는데Logger logger = Logger.getLogger(현재클래스.getName());팀원이 내가 로그를 찍는 방식을 보더니 @Slf4j를 추천해 주었다.그 후 직접 생성할 필요 없이 @Slf4j어노테이션만 달아주고 log.info , log.debug 등으로 바로 사용할 수 있어서 코드가 더 깔끔해지고 간편해졌다.사용하다가 문득 저 해괴한 알파벳의 조합이 무슨 의미일까 궁금해서 찾아보았다Slf4j : Simple Logging Facade for JavaFacade 패턴이란 ?복잡한 서브시스템들의 통합 인터페이스를 제공하는 구조적 디자인 패턴건물의 정면(facade)처럼, 내부의 복잡한 구조를 감추고 깔끔한 외관을.. 2025. 1. 25. 2024년 회고 2024년은 시야가 넓어지고 크게 성장하는 시간이었던 것 같다올해의 나는 운이 좋아서 성장할 수 있는 이벤트들이 많이 일어났고좋은 사람들을 정말 많이 만나게 되었고 철도 조금 들었고 인생의 방향성도 정하게 되었다개발자로써의 성장만 적고 싶었는데 그냥 두서없고 정말 긴 일기가 되고 말았다 일단 나에게 있었던 가장 큰 이벤트는 취업 준비를 하고 태어나서 처음으로 면접을 보러 다니고 실제로 취업을 한 것이다학부 졸업 이후 회피하며 손놓고있던 개발자 취업을 2월에 다시 시작했다계속 풀지 않고 있던 코테도 2월에 풀기 시작하고3월에 은행권 si 코테를 붙고 4월에 지금 회사 코테를 붙었다반년동안 외국계 기업, 스타트업, 대기업 si, 중소 si의 채용 프로세스를 모두 경험해 보면서 각 회사들의 특징과 장단점을 .. 2025. 1. 19. 이전 1 2 3 4 ··· 27 다음