2-30분 Quick Start

하네스가 ‘좋은 프롬프트’와 어떻게 다른지 결과물로 직접 느끼고, .claude/agents와 .claude/skills/ 디렉터리를 처음부터만들어 본다. author와 reviewer 두 에이전트가 파일을 주고받으며 협업하는 2인팀을 완성하고, 자연어 한 줄로 팀을 소환하는 경험을 한다. 직접 해보기 생성-검증 패턴(generator-verifier): author 에이전트가 쓰고 reviewer 에이전트가 검토한다. 한쪽이 놓친 문제를 다른 한쪽의 기준에서 걸릴 가능성이 높아진다. 에이전트에 model 필드를 지정하지 않으면 부모 세션의 모델을 따라간다.

2026-06-18 · 1 min · 57 words

1-왜 하네스인가

하네스 엔지니어링이 무엇인지 이해한다. 프롬프트 엔지니어링과 하네스 엔지니어링이 어떻게 다른지 정리하고 흔히 오해하는 세 가지 개념을 짚어본다. 혼자 일하는 AI는 자기 실수를 못 본다 단일 에이전트는 자신의 실수를 잘 보지 못한다. 하나의 에이전트가 plan → code → verify → self-revise 를 일반적으로 거친다. 이 과정은 자기 출력물을 자기가 검토하는 것과 같기때문에 한계가 있다. 병목은 능력이 아니라 구조다 AI 에이전트 시대에 ‘엄격함’은 사라진게 아니라 자리를 옮겼다. 예시: GC가 들어왔을 때 메모리 관리의 엄격함이 사라진 것이 아니라 런타임과 프로파일러로 옮겨 갔다....

2026-06-18 · 2 min · 222 words

Arcus, Redis, Valkey 비교

셋 다 인메모리 캐시 솔루션이지만, 관계를 이해하려면 먼저 memcached와 Redis의 차이를 알아야 한다. Arcus는 memcached 포크이고, Valkey는 Redis 포크다. 즉 Arcus vs Redis/Valkey는 memcached 계열 vs Redis 계열의 차이, Redis vs Valkey는 라이선스의 차이로 정리된다. memcached vs Redis 두 솔루션의 출발점이자, 나머지 비교의 토대다. 자료구조 memcached: 값을 plain string으로만 저장하는 단순 key-value 저장소. 키는 최대 250 byte, 값은 기본 1MB로 제한된다. Redis: string 외에 hash, list, set, sorted set, stream, bit array, hyperloglog 등 풍부한 자료구조를 지원한다....

2026-06-15 · 6 min · 1258 words

2-코틀린 기초

기본 요소: 함수와 변수 Hello, World! 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 함수를 최상위 수준에서 정의할 수 있다. 꼭 클래스 안에 함수를 넣어야 할 필요가 없다. 배열도 일반적인 클래스와 마찬가지다. 코틀린에는 자바와 달리배열 처리를 위한 문법이 따로 존재하지 않는다. System.out.println 대신에 println이라고 쓴다. 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 wrapper를 제공한다. 줄 끝에 세미콜론을 붙이지 않아도 좋다....

2026-06-15 · 5 min · 1029 words

@ApplicationModuleListener

@ApplicationModuleListener: 모듈 간 통합을 이벤트로 느슨하게 연결할 때 쓰는 이벤트 리스너 선언 단축 표기. Spring Framework 기본 기능이 아니라 Spring Modulith 프로젝트가 제공하는 애노테이션이다. 모듈러 모놀리식에서 한 모듈이 다른 모듈을 직접 호출하지 않고, 도메인 이벤트를 발행해 후속 처리를 위임하는 패턴을 위한 것. 세 애노테이션의 합성 이 애노테이션은 세 가지를 한 번에 붙인 메타 애노테이션이다. @Async — 발행 측과 다른 스레드에서 비동기로 실행한다. @Transactional(propagation = REQUIRES_NEW) — 리스너 자신의 새 트랜잭션에서 실행한다....

2026-06-15 · 4 min · 817 words

11-뉴스 피드 시스템 설계

문제 이해 및 설계 범위 확정 모바일 앱, 웹 둘 다 지원 시간 흐름 역순 한 명의 사용자는 최대 5000명의 친구 매일 천만 명이 방문 피드에 이미지나 비디오 등의 미디어 파일이 포함될 수 있음 개략적 설계안 제시 및 동의 구하기 피드 발행: 사용자가 스토리를 포스팅하면 해당 데이터를 캐시와 데이터베이스에 기록한다. 새 포스팅은 친구의 뉴스 피드에도 전송된다. 뉴스 피드 생성: 지면 관계상 뉴스 피드는 모든 친구의 포스팅을 시간 흐름 역순으로 모아서 만든다고 가정한다....

2026-05-20 · 2 min · 356 words

set -o pipefail

set -o pipefail: 파이프라인의 종료 코드를 가장 오른쪽에서 실패한 명령의 종료 코드로 바꾸는 Bash 옵션. 모든 명령이 성공하면 0을 반환한다. 기본 동작에서는 파이프라인의 종료 코드가 마지막 명령의 종료 코드만 따르기 때문에, 중간 명령이 실패해도 마지막 명령이 성공하면 파이프라인 전체가 성공으로 간주된다. 기본 동작과의 차이 기본 동작: false | true echo $? # 0 (마지막 명령인 true의 종료 코드) pipefail 적용: set -o pipefail false | true echo $? # 1 (false의 종료 코드) 왜 필요한가 스크립트에서 중간 명령이 실패해도 마지막 명령(tee, grep, awk 등)이 성공하면 그대로 다음 단계로 넘어가는 경우가 많다....

2026-05-19 · 1 min · 205 words

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