[TIL] 2024-10-23 (AWS/LangChain/ADsP)TIL (2024)/2024.102024. 10. 24. 00:49
Table of Contents
728x90
Today I Learned (2024-07-12)
목차
오늘 공부한 내용
1. KDT (AWS)
VPC (Virtual Private Cloud)
VPC 정의 및 개요
- VPC란: AWS 계정에 맞춤 설정된 가상 네트워크로, 사용자가 정의한 네트워크 환경을 제공함.
- 활용 예시: EC2 서버, RDS, Lambda와 같은 AWS 서비스를 VPC 안에서 안전하게 배치할 수 있음.
- CIDR 블록: IP 주소 범위를 정의하여 네트워크 크기를 지정할 수 있으며, VPC 생성 후 CIDR은 수정할 수 없음.
VPC 주요 요소
- IP 주소: RFC 1918 규격에 따라 사설 IP 주소 대역 사용 (10.0.0.0/16, 172.16.0.0/12, 192.168.0.0/16 등).
- 리전(Region): 물리적으로 분리된 AWS 데이터 센터 그룹. VPC는 리전 내에서 작동함.
- 가용 영역(AZ): 리전 내에 위치한 독립적인 데이터 센터로, AZ는 하나 이상의 서브넷을 포함할 수 있음.
서브넷 (Subnet)
- Subnet이란: VPC 내에서 네트워크를 구분하는 논리적인 단위로, Public Subnet과 Private Subnet으로 나뉨.
- Public Subnet: 외부 인터넷과 통신이 가능한 서브넷.
- Private Subnet: 외부 통신이 차단된 내부 네트워크 전용 서브넷.
- CIDR 사용: 서브넷 범위는 CIDR로 정의되며, Private 서브넷과 Public 서브넷 간 통신도 설정 가능.
게이트웨이 (Gateway)
- NAT Gateway: Private Subnet 내의 인스턴스가 외부 인터넷과 통신할 수 있도록 지원하는 AWS 관리형 서비스.
- Internet Gateway: VPC와 외부 인터넷 간의 연결을 관리하며, Public Subnet 내의 인스턴스는 이를 통해 인터넷에 연결됨.
보안 그룹 (Security Group)
- 인스턴스 단위 방화벽: AWS 인스턴스에 대한 인바운드와 아웃바운드 트래픽을 제어함.
- 설정 가능 항목: 허용(Allow)만 설정 가능하며, 상태 저장 기능을 통해 허용된 트래픽은 자동으로 추적됨.
NACL (Network Access Control List)
- 서브넷 단위 방화벽: 서브넷 내 모든 인스턴스의 트래픽을 제어함.
- 차이점: SG와 달리 상태 비저장 방식이며, 허용(Allow)과 거부(Deny) 모두 설정 가능함.
- 우선순위: 규칙은 순서대로 평가되며, 먼저 일치하는 규칙이 적용됨.
Boto3 및 AWS 아키텍처
Boto3 정의
- Boto3란: AWS 서비스와 상호작용하기 위한 Python SDK로, S3, EC2, DynamoDB 등 다양한 AWS 서비스를 코드로 관리할 수 있음.
Boto3 주요 특징
- 자동화: AWS 리소스의 실행, 중지, 정기적 백업 등 API를 통해 프로그램 내에서 AWS 서비스를 제어할 수 있음.
- 확장성: 코드 기반으로 AWS 서비스와 상호작용하기 때문에, 프로젝트 규모에 따라 손쉽게 변경할 수 있음.
- 보안성: IAM과의 연동을 통해 API 호출 시 권한이 인증되므로 보안성이 뛰어남.
- 서비스 통합: 다양한 AWS 서비스 간의 연동을 지원하여 복잡한 인프라도 쉽게 관리 가능함.
네트워크 포트 (Port)
- Port란: 네트워크 통신의 출입구로, 데이터가 컴퓨터로 들어오고 나가는 경로임.
- 보안: 포트를 열고 닫음으로써 네트워크 트래픽을 제어하고, 특정 서비스만 접근할 수 있도록 설정할 수 있음.
AWS 아키텍처 개요
- AWS 아키텍처란: 서비스 운영자(DevOps)와 개발자가 협력하여 AWS 인프라와 서비스의 설계도를 작성하는 것.
- 사용 사례: PPT와 외부 서비스를 이용해 아키텍처를 설계하며, 서비스 운영의 안정성과 확장성을 고려한 청사진을 만듦.
2. ADsP
- 문제 풀기
3. LangChain
Runnable (데이터를 효과적으로 전달하는 방법)
- 데이터를 받아서 전달을 해준다.
RunnablePassthrough
는 입력을 변경하지 않거나 추가 키를 더하여 전달할 수 있습니다.RunnablePassthrough()
가 단독으로 호출되면, 단순히 입력을 받아 그대로 전달합니다.RunnablePassthrough.assign(...)
방식으로 호출되면, 입력을 받아 assign 함수에 전달된 추가 인수를 추가합니다.
RunnablePassthrough
- runnable 객체이며, runnable 객체는 invoke() 메소드를 사용하여 별도로 실행 가능
- 딕셔너리 형태로 넘겨주기만 한다.
from langchain_core.runnables import RunnablePassthrough
RunnablePassthrough().invoke({"num":10})
# {'num':10}
runnable_chain = {"num":RunnablePassthrough()} | prompt | llm
runnable_chain.invoke(10)
# chain = prompt | llm
# chain.invoke({"num":10}) 같다.
RunnablePassthrough.assign()
- 입력 값으로 들어온 값의 key/value 쌍과 새롭게 할당된 key/value 쌍을 합칩니다.
- 모두 보여준다.
(RunnablePassthrough.assign(new_num=lambda x:x["num"]*3)).invoke({"num":1})
# {'num': 1, 'new_num': 3}
어려웠던 내용
- AWS / LangChain
- 평소에 접하지 못한것들이라 어렵다
궁금한 내용과 부족한 내용
- 위와 같다
느낀 점
- AWS 복잡해...
'TIL (2024) > 2024.10' 카테고리의 다른 글
[TIL] 2024-10-25 (Postgresql/ADsP) (0) | 2024.10.26 |
---|---|
[TIL] 2024-10-24 (AWS/LangChain/ADsP) (0) | 2024.10.25 |
[TIL] 2024-10-22 (AWS/ADsP/LangChain) (3) | 2024.10.23 |
[TIL] 2024-10-12 (Network/AWS/ADsP/LangChain) (4) | 2024.10.22 |
[TIL] 2024-10-20 (ADsP) (0) | 2024.10.21 |
@mane Lab :: 마네의 연구소
배움에 즐거움을 느끼는 마네의 연구소입니다. 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!