2편의 목표✅ “Agent Loop가 코드에서는 어떻게 드러나는지”를 설명한다 2편에서는 최소 코드 예제를 통해코드에서 무엇이 없고 모델에게 무엇을 위임하는지를 명확히 보여준다. 1️⃣ 기존 RAG 코드의 구조기존 RAG처럼 다음과 같은 코드에서는if need_search: docs = search(query) answer = llm(docs)else: answer = llm(query)검색 여부를 코드가 판단한다실패 처리/프로세스 플로우를 코드가 결정한다👉 즉, 코드가 판단을 미리 하도록 설계돼 있다. 2️⃣ Strands의 기본 구조Strands 공식 문서에서 Agent Loop은 이렇게 설명된다:Invoke the model, check if it wants to use a too..
1편의 목표✅ “Agent Loop 한 바퀴에서 실제로 무슨 일이 벌어지는지 설명할 수 있다” 이 글을 읽고 나면 Agent Loop를 코드 없이 그림으로 설명할 수 있게 된다. 1️⃣ 0편 요약: 왜 Agent Loop가 필요한가 (짧게)고정 워크플로우는 판단을 코드에 묶어둔다Strands는 판단을 모델에게 위임한다그 판단이 반복되는 실행 구조가 Agent Loop다👉 이제 “왜”는 알았고,👉 “어떻게”가 궁금해질 차례 2️⃣ Agent Loop를 한 문장으로 다시 정의Agent Loop란 모델이 ‘다음에 무엇을 할지’를 판단하고, 그 결과를 다시 보고, 충분할 때까지 반복하는 실행 구조다. 중요한 단어는 딱 두 개판단반복3️⃣ Agent Loop 한 바퀴 전체 구조┌───────────────┐..
0편의 목표❌ “Strands API를 어떻게 쓰지?”✅ “왜 Strands는 고정 워크플로우를 버렸는가?”를 설명할 수 있다 1️⃣ 전통적인 RAG / Agent 구조[User Question] ↓[Search] ↓[Post-process] ↓[LLM Answer]또는 조금 발전하면:Search → Rerank → Answer → Validate 이 구조의 본질사람(개발자) 가언제 검색할지몇 번 검색할지검증을 할지 말지실패하면 어떻게 할지👉 전부 코드로 미리 결정문제점질문이 단순해도 항상 Search질문이 복잡해도 Search 1번근거가 부족해도 그냥 답함“지금 이 답이 충분한가?”를 코드가 판단 못함👉 워크플로우는 똑똑해질 수 없음 2️⃣ Strands가 문제 삼은 지점 (핵심) S..
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포하고, 관리하며, 확장할 수 있도록 돕는 시스템이다.클러스터 환경에서 여러 개의 컨테이너를 효율적으로 운영하려면 쿠버네티스의 내부 구조와 동작 방식을 이해하는 것이 중요하다.이번 글에서는 쿠버네티스가 실제로 어떻게 동작하는지 차근차근 살펴보겠다.📌 컨테이너 오케스트레이션이란?컨테이너 오케스트레이션(Container Orchestration)은 여러 개의 컨테이너를 자동으로 배포, 관리, 확장하는 기술이다.💡 왜 필요할까?하나의 컨테이너만 실행하는 경우라면 크게 어렵지 않다.docker run -d -p 8080:80 my-app하지만,수십 개~수천 개의 컨테이너를 운영해야 한다면?컨테이너가 갑자기 종료되면 자동으로 다시 실행해야..
🏆 1. 칭찬할 때 (Giving Positive Feedback)✅ "This is a clean implementation!"→ "코드 깔끔하게 잘 짰네!"🔹 예문:// PR에서 한 동료가 잘 정리된 유틸리티 함수를 작성했을 때/** * Formats a date string to 'YYYY-MM-DD' */function formatDate(date) { return date.toISOString().split('T')[0];}💬 "This is a clean implementation! Simple and easy to read." ✅ "I like how you structured this."→ "코드 구조가 마음에 들어."🔹 예문:class UserService { construc..
AWS와 같은 클라우드 환경에서 로그 관리는 비교적 쉽게 이루어진다. CloudWatch와 같은 서비스를 활용해 실시간으로 모니터링할 수 있기 때문이다. 하지만 이번에 온프레미스 환경에서 직접 Nginx를 구축하면서 로그 파일이 지속적으로 쌓이는 문제를 경험하게 되었고, 이를 해결하기 위해서 간단히 logrotate설정을 추가했다. 이를 위해 도커 컨테이너 내부에서 logrotate를 설정하여 Nginx의 로그를 자동으로 관리하는 방법을 정리하였다. 이 글에서는 로그를 날짜별로 저장하고, 일정 기간이 지나면 자동으로 삭제 및 압축하는 설정 방법을 설명한다. * 실제 환경에선 더 디테일하게 설정해야함* 외부접속 차단되어있어서 로그 툴 못쓰는 환경임 1. 도커 환경에서 로그 저장 구조 설계도커 컨테이너 내부..
Docker를 사용하던 중, 서버의 호스트 네트워크와 Docker의 기본 브릿지 네트워크(docker0)가 충돌하면서 컨테이너의 네트워크 연결이 끊기는 문제가 발생했다. 일반적으로 Docker는 자동으로 네트워크를 설정하지만, 특정 환경에서는 기존 네트워크와 겹쳐서 예상치 못한 네트워크 장애가 발생할 수 있다.오류가 발생한김에 Docker 네트워크 충돌 문제의 원인과 해결 방법을 네트워크 개념과 함께 쉽게 정리해보겠다. 1. 문제 상황: Docker 실행 후 네트워크 연결이 끊김💻 현재 환경- 서버 1 (172.17.1.10)- 서버 2 (172.16.1.10)- 서버 2에서 Docker 실행중 🚨 현상1️⃣ Docker 실행 전에는 서버1 (172.17.1.10) →서버2 (172.16.1.10)..
네트워크를 다루다 보면 패킷, 라우팅, 게이트웨이, 네트워크 인터페이스 같은 개념이 자주 등장한다.이번 글에서는 네트워크가 어떻게 작동하는지 기초부터 쉽게 설명해보겠다. 1. 네트워크에서 데이터는 어떻게 전송될까?컴퓨터가 네트워크를 통해 다른 기기와 데이터를 주고받을 때, 데이터는 "패킷(Packet)"이라는 단위로 쪼개져서 전송된다.패킷은 마치 편지를 보내는 것과 같은 원리로 동작한다.📌 비유하면?패킷 = 편지 봉투 (데이터를 담고 있는 단위)보내는 사람 (출발지 IP) = 송신자받는 사람 (목적지 IP) = 수신자배달원 (라우터) = 데이터를 목적지로 전달하는 역할🚀 패킷 전송 과정 예제내가 192.168.1.10에서 192.168.1.20으로 데이터를 보낸다.운영체제(OS)는 패킷을 생성하고, ..
이번달에는 블로그 글 20개를 써서 수익창출이 되는 블로그를 만들것이다.그래서 오늘의 주제는 잘못알면 헷갈리는 서브넷 마스크와 네트워크 대역 이다. 1. 서브넷 마스크란?IP 주소는 보통 A.B.C.D/숫자 형태로 나타난다.예를 들어 192.168.1.0/24라는 주소에서 /24가 서브넷 마스크를 의미한다.📌 서브넷 마스크 역할:네트워크 부분과 호스트 부분을 구분하는 역할같은 네트워크 안에서 서로 통신할 수 있도록 설정IP 주소를 효율적으로 관리🚀 쉽게 비유하면?"네트워크 = 하나의 아파트 단지""IP 주소 = 아파트 호수"서브넷 마스크는 어디까지가 같은 아파트 단지(네트워크)인지 정하는 기준✅ 예시: 255.255.255.0과 255.255.0.0 차이서브넷 마스크 네트워크 부분 호스트 부분 네트워..