본문 바로가기

오늘의 공부 & 기록

랭체인 공부 랭체인을 사용하는 이유ChatGPT 같은 애플리케이션을 개발할 때 단순히 대화만 하는 경우에는 OpenAI API 만으로 충분랭체인이 필요한 경우는 LLM에 외부 지식, 계산 능력을 활용하게 하고 싶을 때 사용  FastAPI와 랭체인?랭체인은 프레임워크로 간주FastAPI도 프레임워크 FastAPI와 랭체인을 이용해서 프로젝트를 만든다면 2개의 프레임워크를 사용하는 것FastAPI는 웹 프레임워크로서 API 엔드포인트를 정의하고 HTTP 요청을 처리함랭체인은 자연어처리(NLP)작업을 위한 프레임워크로서 텍스트 분석, 생성 및 기타 NLP 관련 작업을 수행하는 역할 두 프레임워크를 함께 사용할 때 FastAPI는 클라이언트와의 인터페이스 역할을하고, 랭체인은 NLP 작업을 처리하는 백엔드 역할을 하게됨예.. 더보기
[Kubernetes] 쿠버네티스와 마이크로 서비스(Microservice) 1. 데브옵스(DevOps) 소프트웨어의 개발(Development)와 운영(Operations)의 합성어 실리콘 밸리를 중심으로 유행하여 전세계에 퍼져 현재 IT 분야에서 가장 진보된 소프트웨어 개발 문화 또는 방법론 소프트웨어 개발자와 정보기술 전문가 간의 소통, 협업 및 통합을 강조하는 개발 환경이나 문화 소프트웨어 개발 조직과 운영 조직간의 상호 의존적 대응이며, 조직이 소프트웨어 제품과 서비슬르 빠른 시간에 개발 및 배포하는 것을 목적으로함 데브옵스의 목적은 전반적인 배포 파이프라인에 걸쳐있음 개발 조직과 운영 조직이 물리적으로 격리되지 않는 환경에서 개발, 테스트, 배포, 운영에 이른 전체 생명주기를 서로 긴밀하게 통합하여 관리 1) 데브옵스 워크 플로우 2) 데브옵스 도구 2. 마이크로 서비.. 더보기
[MQTT] 에러 해결 과정 정리 1. MQTT MQTT(Queue Telemetry Transport)는 Iot(Internet of Thins) 장치 간의 경량 메시징 프로토콜 네트워크 대역폭이 제한적이거나 지연 시간이 민감한 환경에서도 효율적인 통신을 가능하게함 2. QoS(Quality of Service) MQTT는 QoS 레벨을 사용하여 메시지 전달의 품질을 보장함 메시지가 어떻게, 그리고 얼마나 신뢰성 있게 전송되어야 하는지 정의 세 가지 QoS 레벨로 나눠짐 1) QoS 0(At most once) 메시지가 최대 한 번 전송되도록 보장 메시지가 전송 후 전송 여부에 대한 확인이나 재시도가 없으므로 네트워크 오류로 인한 메시지 손실 가능성이 있음 가장 낮은 레벨로 가장 낮은 오버헤드를 가지며 빠르고 경량의 통신이 필요할 때 .. 더보기
api 동시 요청 수 제한하는 방법 스프링부트에 내장되어 있는 서블릿 컨테이너인 톰캣이 다중요청을 처리해줌 톰캣은 다중 요청을 처리하기 위해 부팅 시 스레드 컬렉션인 스레드풀을 생성함 유저 요청이 들어오면 스레드 풀에서 하니씩 스레드를 할당 해당 스레드에서 부트에서 작성한 디스패처서블릿을 거쳐 유저 요청을 처리함 작업을 수행하고 나면 스레드는 스레드 풀로 반환 됨 스프링부트에서는 서블릿 컨테이너인 내장 톰캣에서 웹 애플리케이션을 실행하면서 여러 api 요청을 처리할 때 기본적으로 api 요청이 들어올 때마다 새로운 스레드를 생성하여 다중 스레드를 사용하여 병렬적으로 요청을 처리함 내부적으로 스레드 풀을 사용하여 효율적으로 스레드를 관리함 각각의 스레드는 독립적으로 해당 요청을 처리하므로 여러 요청이 동시에 처리될 수 있음 -> api 요청.. 더보기
HTTP 상태코드 1. 상태코드 클라이언트가 보낸 요청 처리 상태를 응답에서 알려주는 기능 2. 대표적인 상태코드 1) 1xx(Informational) - 요청이 수신되어 처리중 - 거의 사용하지 않으므로 생략 2) 2xx(Successful) - 요청 정상 처리 200 OK 요청 성공 201 Created - 요청 성공해서 새로운 리소스가 생성됨 - 생성된 리소스는 응답의 Loacation 헤더 필드로 식별 202 Accepted - 요청이 접수되었으나 처리가 완료되지 않음 - 배치 처리 같은 곳에서 사용(요청 후 1시간 뒤 배치 프로세스가 요청을 처리함) 204 No Content - 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 - 결과 내용이 없어도 204(2xx)만으로 성공을 인.. 더보기
HTTP API설계 예시 1. POST를 이용한 신규 자원 등록 1) 클라이언트는 등록될 리소스의 URI를 모름 - 회원등록: /members -> POST 예) POST /members 2) 서버가 새로 등록된 리소스 URI를 생성해 줌 예) HTTP/1.1 201 Created Location: /members/100 3) 컬렉션(Collection) - 서버가 관리하는 리소스 디렉토리 - 서버가 리소스의 URI를 생성하고 관리 - 위 예시에서 컬렉션은 /members 2. PUT을 이용한 신규 자원 등록 1) 클라이언트가 리소스 URI를 알고 있어야 함. - 파일등록: /files/{filename} -> PUT 예) PUT /files/star.jpg 2) 클라이언트가 직접 리소스의 URI를 지정함 3) 스토어(Store.. 더보기
HTTP 메서드 활용 1. 클라이언트에서 서버로 데이터 전송 1) 전송방법 a. 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터(검색어) b. 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원가입, 상품주문, 리소스 등록, 리소스 변경 2) 상황 a. 정적 데이터 조회 - 이미지, 정적 텍스트 문서 - 조회는 GET 사용 - 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회 가능 b. 동적 데이터 조회 - 주로 검색, 게시판 목록에서 정렬 필터(검색어) - 조회 조건을 줄여주는 필터(검색어), 조회 결과를 정렬하는 정렬 조건에 주로 사용 - 조회는 GET 사용 - GET은 쿼리 파라미터 사용해서 데이터 전달 c. HTML Form을 통한 데이터 전송 - HTML.. 더보기
HTTP 메서드 1. HTTP API 설계 요구사항: 회원 정보 관리 API 만들기 - 회원 목록 조회 - 회원 조회 - 회원 등록 - 회원 수정 - 회원 삭제 1) API URI 고민 URI(Uniform Resource Identifier) 리소스의 의미 - 회원 등록/조회/수정은 리소스가 아님 - 회원이라는 개념 자체가 리소스 리소스의 식별을 어떻게 하는 것이 좋을까? - 회원 등록/조회/수정 을 모두 배제 - 회원이라는 리소스만 식별하면 됨 -> 회원 리소스를 URI에 매핑 2) API URI 설계 리소스 식별, URI 계층 구조 활용 - 회원 목록 조회 /members - 회원 조회 /members/{id} - 회원 등록 /members/{id} - 회원 수정/members/{id} - 회원 삭제 /member.. 더보기