튜토리얼 143

MCP (Model Context Protocol) 2. 서버 개발하기

조대협 (http://bcho.tistory.com)지난 글을 통해서 MCP의 개념에 대해서 간략하게 이해해봤다. 이번글에서는 그러면 어떻게 MCP 서버를 실제로 구현하는지에 대해서 알아보도록 한다. MCP Local server & remote serverMCP server 는 구동 위치에 따라서, 로컬 서버와 리모트 서버로 분리된다. 아래는 Anthropic 의 아키텍처 다이어그램이다.   로컬 서버의 경우, MCP 애플리케이션 호스트 프로세스가 기동되는 로컬 데스크탑에서 실행되는 서버이고, 리모트 서버는 클라우드나 기타 네트워크로 접속될 수 있는 환경에서 기동되는 서버이다. 로컬 서버의 경우에는 같은 데스크탑에서 실행되기 때문에, 로컬 자원, 즉 데스크탑의 파일 등에 접근할 수 있다.(노트 : 이는..

MCP (Model Context Protocol) 1. 개념 이해

조대협 (http://bcho.tistory.com) 근래에 들어서 LLM 에 관련해서 가장 핫한 토픽중에 하나는 MCP (Model Context Protocol)이다. MCP는 Anthropic에서 발표한 프로토콜로 LLM 모델이 외부 애플리케이션과 연동할 수 있도록 해주는 스펙으로, 예를 들어 클로드 모델이 학습된 결과로 답변만할 수 있는데 비해서 MCP를 이용하여 외부 애플리케이션과 연동하게 되면, 구글 검색 결과를 통해서 최신 정보를 가지고 답변을 하거나, Spotify를 이용해서 음악을 플레이하도록 할 수 있다.  이번 글에서는 MCP에 대한 개념에 대해서 이해해보도록 한다. (아래는 본 글의 내용을 이해하기 쉽게 설명한 비디오 이다. ) Agent 개념의 이해MCP를 이해하려면 먼저 LLM과..

파이썬 - pass 키워드

pass 문의 의미와 Python 프로그래밍에서의 사용 용도pass 문의 의미pass 문은 Python에서 아무런 동작도 하지 않는 문장입니다. 즉, 문법적으로는 문장이 필요하지만, 실제로 어떤 코드도 실행하고 싶지 않을 때 사용합니다. pass는 일종의 자리 표시자(placeholder) 역할을 합니다.Python 프로그래밍에서 pass 문의 사용 용도빈 클래스 또는 함수 정의:클래스나 함수의 골격만 먼저 작성하고, 나중에 내용을 채우고 싶을 때 pass를 사용하여 빈 블록을 만듭니다.이는 특히 코드를 설계하는 초기 단계나, 다른 사람과의 협업 시 인터페이스를 먼저 정의할 때 유용합니다.class MyClass: # 클래스 정의는 필요하지만 내용은 나중에 작성 passdef my_function..

Nest.JS 살펴보기 - 2. Hello World

Nest.JS 살펴보기 - 2. Hello World조대협 (http://bcho.tistory.com)1. 프로젝트 생성:터미널을 열고 다음 명령어를 실행하여 hello-world라는 이름의 Nest.js 프로젝트를 생성한다.nest new hello-world프로젝트 생성 과정에서 패키지 매니저를 선택하라는 메시지가 나타나면 npm을 선택한다. 프로젝트 생성이 완료되면 hello-world 디렉토리로 이동한다. cd hello-world2. 주요 파일 설명:생성된 프로젝트에는 다음과 같은 주요 파일들이 있다.src/app.controller.ts: 애플리케이션의 컨트롤러를 정의하는 파일이다. 컨트롤러는 클라이언트로부터 들어오는 요청을 처리하고, 그에 대한 응답을 반환하는 역할을 수행한다. 라우팅 로직..

쿠버네티스 패키지 매니저 Helm #2-1. Chart

쿠버네티스 패키지 매니저 HELM#2-1 .Chart조대협 http://bcho.tistory.comHelm Chart차트는 helm의 패키지 포맷으로, 하나의 애플리케이션을 설치하기 위한 파일들로 구성되어 있다. 예를 들어 tomcat을 설치하기 위한 쿠버네티스의 pod,service,deployment를 위한 YAML 파일등을 포함한다.템플릿과 밸류Helm 은 기본적으로 템플릿의 개념을 사용한다. 템플릿 파일을 만들어놓은 후에, 밸류 값을 채워 넣어서 쿠버네티스 리소스를 정의한 YAML 파일을 생성한다. 예제를 살펴보자Helm 은 기본적으로 템플릿의 개념을 사용한다. 템플릿 파일을 만들어놓은 후에, 밸류 값을 채워 넣어서 쿠버네티스 리소스를 정의한 YAML 파일을 생성한다. 예제를 살펴보자. 먼저 t..

SRE #4-예제로 보는 SLI/SLO 정의 방법

SRE #4-예제로 살펴보는 SLI/SLO 정의 방법조대협 (http://bcho.tistory.com) 앞에서 SRE의 주요 지표인 SLO/SLI의 개념에 대해서 설명하였는데, 그러면 실제 서비스에서는 어떻게 SLO/SLI를 정의하는지에 대해서 알아본다.SLI는 사용자 스토리당 3~5개 정도가 적당하다. 사용자 스토리는 로그인, 검색, 상품 상세 정보와 같이 하나의 기능을 의미한다고 보면된다. 아래 그림과 같은 간단한 게임 서비스가 있다고 가정하자. 이 서비스는 웹사이트를 가지고 있고, 그리고 앱을 통해서 접근이 가능한데, 내부적으로 API 서비스를 통해서 서비스가 된다. 내부 서비스에는 사용자 랭킹(Rank ), 사용자 프로파일 (User profiles) 등의 서비스가 있다. 이 서비스에서 "사용자..

서버리스 오픈소스 - knative #1 소개 & Serving

Serveless를 위한 오픈소스 KNative조대협(http://bcho.tistory.com)배경근래에 들어서 컨테이너를 사용한 워크로드 관리는 쿠버네티스 de-facto 표준이 되어가고 있는데, 쿠버네티스 자체가 안정되어가고 있지만, 이를 현업에 적용하기 위해서는 아직까지 여러가지 챌린지가 있다.컨테이너 기반의 쿠버네티스 서비스가 지향하는 바는, 셀프서비스 기반의 데브옵스 모델로 인프라와 이를 자동화하는 플랫폼을 인프라엔지니어가 개발하여 개발팀에 제공하고, 개발팀은 개발과 배포/운영을 스스로 하는 모델이다.그런데 예를 들어 간단한 무상태(stateless) 웹서비스를 하나 구축한다 하더라도 Deployment,Ingress,Service 등의 쿠버네티스 리소스를 정의해서 배포해야 하고, 여기에 오토..

로그 프레임워크 #2 - 기본 로깅 및 JSON 포맷으로 로깅하기

로그 시스템 #2- 자바 로그 & JSON 로그 포맷조대협 (http://bcho.tistory.com) 앞 글에서 간단하게 자바 로깅 프레임워크에 대해서 알아보았다. 그러면 앞에서 추천한 slf4j와 log4j2로 실제 로깅을 구현해보자SLF4J + log4j2메이븐 프로젝트를 열고 dependencies 부분에 아래 의존성을 추가한다. 버전은 최신 버전을 확인하도록 한다. artifactid가 log4j-slf4j-impl 이지만, log4j가 아니라 log4j2가 사용된다. org.apache.logging.log4jlog4j-slf4j-impl2.11.2 다음 log4j2의 설정 정보 파일인 log4j2.properties 파일을 src/main/resources 디렉토리 아래에 다음과 같이 생성..

쿠버네티스 #21 - 리소스(CPU/Memory) 할당과 관리

쿠버네티스 리소스(CPU/Memory)할당과 관리조대협 리소스 관리 쿠버네티스에서 Pod를 어느 노드에 배포할지를 결정하는 것을 스케쥴링이라고 한다.Pod에 대한 스케쥴링시에, Pod내의 애플리케이션이 동작할 수 있는 충분한 자원 (CPU,메모리 등)이 확보되어야 한다. 쿠버네티스 입장에서는 애플리케이션에서 필요한 자원의 양을 알아야, 그 만한 자원이 가용한 노드에 Pod를 배포할 수 있다. 쿠버네티스에서는 이런 컨셉을 지원하기 위해서 컨테이너에 필요한 리소스의 양을 명시할 수 있도록 지원하고 있다. 현재(1.9 버전) 지원되는 리소스 타입은 CPU와 메모리이며, 아직 까지는 네트워크 대역폭이나 다른 리소스 타입은 지원하고 있지 않다.리소스 단위리소스를 정의하는데 사용되는 단위는 CPU의 경우에는 ms(..

쿠버네티스 #20 - Security Best Practice

쿠버네티스 보안 Best Practice 조대협 (http://bcho.tistory.com) 지금까지 여러가지 보안 기능에 대해서 알아보았다. 그러면 이러한 보안 기능을 어떻게 잘 사용할지 베스프 프렉틱스에 대해서 알아보자. 쿠버네티스 보안 베스트 프렉틱스는 쿠버네티스 공식 블로그 https://kubernetes.io/blog/2016/08/security-best-practices-kubernetes-deployment/ 에 2016년 8월에 포스팅과 https://kubernetes.io/docs/tasks/administer-cluster/securing-a-cluster/ 에 2018년 7월에 포스팅된 내용을 기반으로 한다. 쿠버네티스는 새버전 릴리즈가 빠른 편이고 버전마다 기능이나 아키텍쳐의..