7-분산 시스템을 위한 유일 ID 생성기 설계

문제 이해 및 설계 범위 확정 요구사항 ID는 유일해야 한다. ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현되어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 10000개의 ID를 만들 수 있어야 한다. 개략적 설계안 제시 및 동의 구하기 다중 마스터 복제 데이터베이스의 auto_increment 기능을 활용하는 것이다. 다음 ID의 값을 구할 때 1만큼 증가시키는 것이 아니라, k만큼 증가시킨다. 단점 규모를 늘리기 어렵다. ID의 유일성이 보장되지만, 시간 흐름에 맞춰 커지도록 보장할 수 없다....

2026-04-22 · 2 min · 214 words

6-프롬프트 구성하기

이상적인 프롬프트 구조 프롬프트의 모든 요소를 개행 문자로 끝나도록 강제하면 문자열 처리 코드를 단순하게 만들 수 있다. 샌드위치 기법: 프롬프트 첫 부분에 도입부를 넣고 마지막 부분에 초점 재설정을 넣는다. 도입부: 작성할 문서의 유형을 명확하게 하고 보델이 이후 콘텐츠에 올바른 방향으로 접근할 수 있도록 준비하는 역할 초점 재설정: 모델에게 주요 질문을 상기 시키는 역할 이유: 모든 LLM은 인-콘텍스트 학습과 중간 부분 상실 현상의 영향을 받기 때문이다. 인-콘텍스트 학습: 프롬프트에서 정보가 끝부분에 위치할수록 모델에 더 큰 영향을 미친다....

2026-04-22 · 3 min · 595 words

5-프롬프트 내용

LLM 이전의 추천 시스템은 일반적으로 협업 필터링(collaborative filtering) 같은 수학적 접근법을 사용했다. 협업 필터링: 사용자의 사용 패턴을 다른 모든 사용자의 사용 패턴과 비교해 추천을 도출한다. LLM을 사용한다면 사용 패턴뿐만아니라 사용자의 인구통계학적 정보, 도서 외 관심사, 최근 경험 등의 정보를 정돈되지 않은 텍스트 데이터로 제공한다. 콘텐츠 출처 정적 콘텐츠: 항상 동일한 정보 예시: 다음에 어떤 책을 읽으면 좋을까? 재미로 읽을 만한 책을 말하는 거야, 교과서 같은 것 말고. 동적 컨텐츠: 질문 대상에 대한 맥락, 즉 무엇에 대해 묻고 있는지에 대한 세부 정보를 제공한다....

2026-04-22 · 4 min · 742 words

15-데이터 타입

컬럼의 데이터 타입과 길이를 선정할 때 가장 주의할 사항은 다음과 같다. 저장되는 값의 성격에 맞는 최적의 타입을 선정 가변 길이 컬럼은 최적의 길이를 지정 조인 조건으로 사용되는 컬럼은 똑같은 데이터 타입으로 선정 문자열(CHAR와 VARCHAR) 저장 공간 CHAR와 VARCHAR의 공통점은 문자열을 저장할 수 있는 데이터 타입이라는 점이고, 가장 큰 차이는 고정 길이냐 가변 길이냐다. CHAR(1)과 VARCHAR(1) 타입을 사용할 때 사용되는 저장 공간의 크기 두 문자열 타입 모두 한 글자를 저장할 때 사용하는 문자 집합에 따라 실제 저장 공간은 1~4바이트까지 사용된다....

2026-04-22 · 13 min · 2760 words

10-알림 시스템 설계

알림 시스템: 모바일 푸시 알림, SMS 메시지, 이메일 문제 이해 및 설계 범위 확정 연성 실시간 시스템: 가능한 한 빨리 전달되어야 하지만 시스템에 높은 부하가 걸렸을 떄 약간의 지연은 무장 지원 단말: iOS, 안드로이드, 랩탑/데스크탑 알림을 만드는 대상: 클라이언트 애플리케이션 프로그램, 서버 측의 스케줄링 사용자가 알리믕 받지 않도록 설정 가능 하루에 천만 건의 모바일 푸시 알림, 백만 건의 SMS 메시지, 5백만 건의 이메일 개략적 설계안 제시 및 동의 구하기 알림 유형별 지원 방안 iOS 푸시 알림 세 가지 컴포넌트가 필요하다....

2026-04-22 · 3 min · 490 words

4-LLM 애플리케이션 설계하기

루프 구조 루프: 사용자 도메인과 모델 도메인 간의 변환 사용자 문제를 받아서 모델이 완성해야 할 문서나 대화기록 으로 바꿔준다. 모델이 응답을 생성하면 루프는 모델의 결과를 사용자 문제에 대한 해결책의 형태로 사용자 도메인에 반환한다. 루프는 한 번만 도는 경우도, 연달아 여러 차례 실행되는 경우도 있다. 사용자 문제 사용자 문제 도메인에 포함되는 내용 문제가 전달되는 매체: LLM에서는 텍스트가 가장 자연스럽다. 추상화 수준: 추상화 수준이 높을수록 더 복잡한 추론이 필요하다. 필요한 맥락 정보: 대부분의 도메인에서는 사용자가 제공하는 정보 외에도 추가 정보를 검색해야 한다....

2026-03-16 · 4 min · 776 words

3-대화형으로 넘어가기

LLM 기본 모델은 애플리케이션 설정에 사용하기 어렵다. 이유1: 인터넷상의 임의의 문서로 학습했기 때문에 기본 모델은 인터넷의 밝은 면과 어두운 면을 모두 모방할 수 있다. 이유2: 기본 모델은 문서 완성만 할 수 있다. 우리는 종종 LLM이 어시스턴트 역할도 하고, 파이썬 코드도 자실행하며, 검색해서 반영하고, 외부 도구를 실행할 수 있기를 바란다. 이유3: 사용자가 LLM을 맞춤 설정할 수 있게하고 싶은 경우도 있다. 인간 피드백을 통한 강화학습 인간 피드백을 통한 강화학습(reinforcement learning from human feedback, RLHF): 인간의 선호도를 사용해서 LLM의 동작을 조정하는 LLM 학습 기법 모델 정렬: 사용자 기대와 더 부합하는 생성 결과를 만들기 위해 모델을 파인튜닝하는 절차....

2026-03-16 · 4 min · 645 words

2-LLM의 이해

LLM은 무엇인가? LLM: 텍스트를 입력하면 텍스트가 출력되는 서비스 LLM은 학습 데이터셋이라고 하는 방대한 문서를 활용해 훈련한다. 학습 데이터셋에서 모델은 학습 데이터셋과 유사해 보이는 출력을 생성하는 방법을 배워야 한다. 과적합: 모델이 학습 데이터셋의 패턴을 학습하는 대신 문장 덩어리르 암기하는 것 문장 자동 완성 학습 데이터를 잘 알수록 그 학습 데이터에서 학습된 LLM이 어떤 결과를 만들어낼 가능성이 높은지에 대한 직관이 좋아진다. 인간 사고 vs LLM 처리 사람은 LLM과 달리 텍스트를 만들어낼 때 단지 그러릇해 보이는 문장을 만드는 것 이상의 과정을 거친다....

2026-03-09 · 5 min · 869 words

1-프롬프트 엔지니어링 소개

LLM은 단순히 한 텍스트 블록의 다음에 올 단어를 예측하는 모델일 뿐이다. 따라서 LLM은 단순히 사용자가 어떤 작업을 수행하는 데 도움이 되는 도구일 뿐이며 이러한 도구와 상호작용하는 방법은 사용자가 완성해야 할 텍스트 블록, 즉 프롬르트를 만드는 것이다. 언어 모델: 어쩌다 우리가 여기까지 왔지? 초기 언어 모델 최초로 소개된 언어 모델: 마르코프 모델 2014년까지 가장 강력한 언어 모델은 구글에서 소개한 seq2seq 아키텍처에 기반한다. 아키텍처: 인코더와 디코더 두 컴포넌트로 구성된다. 토큰 스트림을 인코더로 전송하면, 인코더는 입력 시퀀스의 정보를 축적하는 숨겨진 상태벡터를 업데이트한다....

2026-03-05 · 2 min · 297 words

클로드 코드 공식 문서 팁 정리

비대화형으로 프롬프트 하나 실행 후 출력하는 방법 claude -p "query" CI/CD 파이프라인이나 스크립트에서 활용하기 좋음 Skill vs Subagent 측면 Skill Subagent 정의 재사용 가능한 지침, 지식 또는 워크플로우 자신의 컨텍스트를 가진 격리된 워커 주요 이점 컨텍스트 간 콘텐츠 공유 컨텍스트 격리. 작업은 별도로 발생하고 요약만 반환된다. 최적 용도 참조 자료, 호출 가능한 워크 플로우 많은 파일을 읽는 작업, 병렬 작업, 특화된 워커 Claude Code 모범 사례 Claude에게 작업을 검증할 방법을 제공해라....

2026-03-03 · 3 min · 610 words

5-유용한 클로드 코드 애드온 알아보기

Super Claude 클로드 코드에 파인튜닝된 커스텀 프롬프트를 생성해주는 클로드 코드 프레임워크 바이브 코딩을 하면서 자주 사용하는 프롬프트와 MCP를 직접 정리할 필요 없이 잘 튜닝된 커스텀 커맨드가 사용자 설정에 생성되어 즉시 모든 프로젝트에서 사용할 수 있다. 최근엔 Claude Code Skills, Plan Mode, Subagents 같은 기능이 순정이 기본으로 통합되어버려서 굳이 사용할 필요가 사라졌다는 의견도 있다. 순정 툴을 쓰는게 컨텍스트 오염을 막고 훨씬 실용적이라는 의견이 주를 이루고 있다. Claude Code Action 클로드 코드 액션을 사용하면 깃허브에서도 클로드 코드를 직접 사용할 수 있다....

2026-02-24 · 1 min · 148 words

4-클로드 코드 실전 사용 방법 알아보기

2026-02-24 · 0 min · 0 words

3-클로드 코드 고급 기능 활용하기

클로드의 잠재력을 끌어올리는 2가지 방법 CoT Chain of Through CoT 기법 적용해야 하는 이유 정확성: 각 단계를 검증하며 진행하므로 최종 결론의 신뢰도가 높아진다. 일관성: 최종 결과물을 더욱 긴밀하고 체계적인 구성을 갖추도록 돕는다. 디버깅 용이성: 논리적 흐름으로 특정 결과에 도달했는지 투명하게 보여준다. CoT 유도방법 프롬프트에 ‘생각해라’라는 문구만 들어가 있으면 된다. ex) 단순히 REST API 어떻게 설계 할 수 있는지 단계별로 생각하고 답변해줘. 확장된 사고 확장된 사고 유도 방법 ‘고민해라’라고 말하면 된다. ‘고민해라’보다 ‘깊게 고민해라’가 더 오랜 사고를 유도하고, ‘더 깊게 고민해라’는 더욱 더 오랜 사고를 유도한다....

2026-02-11 · 5 min · 872 words

2-클로드 코드 핵심 기능 활용하기

클로드 코드 기본 인터페이스 이해하기 클로드 코드 초기화 /init 명령어: 프로젝트를 분석해 CLAUDE.md 파일을 생성한다. 프로젝트 오버뷰, UI 구조, 아키텍처 등 프로젝트를 이해하기 위한 필수 정보들이 작성되어 있다. 자주 사용하는 클로드 단축키 단축키 설명 Ctrl + C 현재 입력이나 클로드의 생성 중인 아웃풋을 중단한다. Ctrl + D 클로드 코드 세션을 종료한다. Ctrl + L 클로드 코드와의 대화는 유지하며 사용자 대화창의 입력을 전부 삭제한다. 위/아래 방향키 기존에 실행했던 메시지를 조회한다. Esc + Esc 직전 메시지로 회귀한다....

2026-02-09 · 4 min · 765 words

1-클로드 코드 세팅하기

왜 클로드 코드인가? 초창기 AI 협업 모델의 한계 맥락의 부재: 수백만 줄에 달하는 코드를 AI에 입력하기에는 콘텍스트 윈도우가 턱없이 부족했고, 이로 인해 AI는 기존 코드와 충돌하는 제안을 하거나, 프로젝트의 코드 스타일과 아키텍처 패턴을 무시한 일관성 없는 코드를 생성했다. 파편화된 워크플로: IDE와 AI 채팅창을 오가며 코드를 복사하고 붙여넣는 번거로운 작업을 해야됐다. 끊임없는 마이크로매니지먼트의 필요성: 개발자가 모든 단계를 세밀하게 지시해야 했다. 수동적 실행: AI가 먼저 제안하거나 문제를 지적하지 않았다. 에이전트 AI가 수행할 수 있는 작업 새로운 기능 구현을 위한 파일 생성 및 기존 코드 수정 프로젝트에 필요한 라이브러리 검색 및 설치 테스트 스크립트 작성 및 실행 버그 재현 및 수정안 제안 필요한 개발 도구의 자동 설치 및 환경 설정 클로드 코드의 동작 방식 프로젝트 구조 분석 작업 계획 수립 실행 검증 및 개선 클로드 코드와 커서의 차이점 클로드 코드의 성능이 압도적으로 좋다....

2026-02-03 · 1 min · 169 words

9-웹 크롤러 설계

웹 크롤러 용도 검섹 엔진 인덱싱: 웹 페이지를 모아 검색 엔진을 위한 로컬 인덱스를 만든다. 웹 아카이빙: 나중에 사용할 목적으로 장기보관하기 위해 웹에서 정보를 모으는 절차를 말한다. 웹 마이닝: 인터넷에서 유용한 지식을 도출한다. 웹 모니터링: 인터넷에서 저작권이나 상표권이 침해되는 사례를 모니터링할 수 있다. 문제 이해 및 설계 범위 확정 좋은 웹 크롤러가 만족시켜야 할 속성 규모 확장성: 병행성을 활용하면 효과적으로 웹 크롤링을 할 수 있다. 안정성: 잘못 작성된 HTML, 아무 반응이 없는 서버, 장애, 악성 코드가 붙어 있는 링크에 잘 대응할 수 있어야 한다....

2026-01-28 · 5 min · 897 words

8-URL 단축기 설계

문제 이해 및 설계 범위 확정 기본적 기능 URL 단축: 주어진 긴 URL을 훨씬 짧게 줄인다. URL 리다이렉션: 축약된 URL로 HTTP 요청이 오면 원래 URL로 안내 높은 가용성과 규모 확장성, 그리고 장애 감내가 요구됨 개략적 추정 쓰기 연산: 매일 1억 개의 단축 URL 생성 초당 쓰기 연산: 1억/24/3600 = 1160 읽기 연산: 읽기 연산과 쓰기 연산 비율을 10:1이라고 하면 초당 11600회 발생한다. URL 단축 서비스를 10년간 운영한다고 가정하면 3650억개의 레코드를 보관해야 한다....

2026-01-28 · 2 min · 377 words

8-'정확히 한 번'의미 구조

7장까지는 ‘최소 한 번’ 전달에 초점을 맞췄다. 하지만 메시지 중복의 가능성은 여전히 있다. 현실에서 사용되는 대부분의 애플리케이션들은 메시지를 읽는 애플리케이션이 중복 메시지를 제거할 수 있도록 메시지에 고유한 식별자를 포함한다. 카프카 ‘정확히 한 번’ 의미 구조는 두 개의 핵심 기능의 조합로 이루어진다. 멱등성 프로듀서: 프로듀서 재시도로 인해 발생하는 중복을 방지한다. 트랜잭션 의미 구조: 스트림 처리 애플리케이션에서 ‘정확히 한 번’ 처리를 보장한다. 멱등성 프로듀서 멱등성: 작업을 여러 번 실행해도 한 번 실행한 것과 결과가 같은 성질 프로듀서에서 메시지가 중복으로 발생하는 일반적인 시나리오 파티션 리더가 프로듀서로부터 레코드를 받아서 팔로워들에게 성공적으로 복제한다....

2026-01-28 · 9 min · 1899 words

6-키-값 저장소 설계

키-값 저장소: 비 관계형 데이터베이스로 저장소에 저장되는 값은 고유 식별자를 키로 가진다. 키는 일반 텍스트일 수도 있고 해시 값일 수도 있다. 키는 성능상의 이유로 짧을수록 좋다. 문제 이해 및 설계 범위 확정 다음 특성을 갖는 키-값 저장소를 설계해 볼 것이다. 키-값 쌍의 크기는 10KB 이하이다. 큰 데이터를 저장할 수 있어야 한다. 높은 가용성을 제공해야 한다. 따라서 시스템은 설사 장애가 있더라도 빨리 응답해야 한다. 높은 규모 확장성을 제공해야 한다. 따라서 트래픽 양에 따라 자동적으로 서버 증설/삭제가 이루어져야 한다....

2026-01-28 · 7 min · 1289 words

5-안정 해시 설계

수평적 규모 확장성을 달성하기 위해서는 요청 또는 데이터를 서버에 균등하게 나누는 것이 중요하다. 해시 키 재배치(rehash) 문제 나머지 연산으로 해시를 배치하는 것은 데이터 분포가 균등할 때만 잘 동작한다. 또한, 서버가 추가되거나 기존 서버가 삭제되면 대부분의 키가 재분배된다. 안정 해시 안정 해시: 해시 테이블 크기가 조정될 때 평균적으로 k/n개의 키만 재배치하는 기술 k: 키의 개수 n: 슬롯의 개수 기본 구현법 해시 함수를 사용해서 서버 IP나 이름으로 링 위에 서버를 배치한다. 해시 키도 똑같이 배치한다....

2026-01-28 · 1 min · 141 words