DevOps/Amazon Web Service
[AWS] Serverless Architecture
[AWS] Serverless Architecture
2025.02.27말 그대로 서버가 아예 없는게 아니고 개발자가 직접 서버를 관리 할 필요가 없는 아키텍처를 서버리스 아키텍처라고 부른다.AWS에서는 Gateway / Lambda / DynamoDB 서비스를 통해 서버리스 아키텍처를 제공한다. Lambda는 이벤트 기반으로 다양한 언어로 작성된 소스코드를 실행하는 서버리스 컴퓨팅 서비스로, 여러 AWS 서비스와 통합되어서 사용되는 경우가 많다. EC2를 사용할 때는 사용자가 직접 서버 설정, OS 관리 등 인프라 관련 작업을 수행해 줘야 했지만, Lambda는 AWS가 직접 인프라를 관리 해 주고 이벤트가 발생할 때만 소스가 실행돼 서비스 비용 계산도 편하다. import boto3s3 = boto3.client('s3')def lambda_handler(event..
[AWS] Decoupling System
[AWS] Decoupling System
2025.02.19AWS로 시스템을 설계하고, 아키텍처를 구성하고 있는 컴포넌트들이 다른 컴포넌트에 직접적으로 의존하는 경우 컴포넌트끼리 강한 결합이 발생해 의존성이 커지고, 한 컴포넌트에서 발생한 오류가 다른 컴포넌트로 전이되는 등 여러 문제점이 발생한다. 이 때 SQS / SNS / Kinesis 등 미들웨어를 도입해 아키텍처 내 컴포넌트들을 Decoupling 해서 메세지나 이벤트를 통해 컴포넌트들을 연결한다면 전체 시스템의 확장성, 유지보수성을 크게 향상시킬 수 있다. SQSSimple Queing Service 약자로 AWS에서 제공하는 메세지 큐 서비스이다.MSA나 분산 시스템에서 컴포넌트 간의 통신을 디커플링하고 비동기 처리할 때 사용된다. Amazon SQS의 세부 구현 사항이 공개되지는 않았지만.. ..
[AWS] S3 - Simple Storage Service
[AWS] S3 - Simple Storage Service
2025.01.22말 그대로 AWS에서 제공하는 저장소 EBS는 EC2 인스턴스에 붙어서 로컬 디스크처럼 사용되는 블록 스토리지이고, S3는 버킷 구조를 사용하는 객체의 클라우드 스토리지이다. EBS는 디스크 S3는 클라우드 저장소라고 생각하자. S3는 데이터를 거의 무제한으로 저장할 수 있다. 버킷 (Bucket)S3에서 데이터를 저장하는 컨테이너 역할을 수행한다.AWS 계정으로 여러 버킷을 생성할 수 있고, 이 때 생성하는 버킷의 이름은 고유값이다. 객체 (Object)S3에 저장되는 데이터의 단위.Key(Full Path)로 데이터를 식별하고 메타데이터로 파일 형식, 사용자 정의 태그를 명시한다.디렉토리 구조를 지원하지 않지만 Key를 사용해 가상 디렉토리 구조를 표현한다. S3의 접근 제어 방식은 크게 User-B..
[AWS] Route53
[AWS] Route53
2025.01.18Route53은 AWS에서 제공하는 클라우드 DNS로, 사용자가 도메인을 등록하고 트래픽을 다양한 AWS 서비스나 외부 서버로 라우팅하는 기능을 제공한다. (53은 port) TLD(Top Level Domain)는 도메인 이름의 가장 마지막 부분이다. gTLD - .com / .org / .net 등 전 세계 공용 TLD ccTLD - .kr / .us 등 특정 국가나 지역을 나타내는 TLDnTLD - .app / .tech 등 비교적 최근에 추가된 특수 목적 TLD SLD(Second Level Domain)은 TLD 바로 앞에 붙어 도메인의 고유한 이름을 정의하고, SubDomain은 SLD 앞에 붙어 도메인을 세분화한다. 브라우저가 도메인 이름으로 목적지 IP를 찾을 때는..
[AWS] RDS - Relational Database Service
[AWS] RDS - Relational Database Service
2025.01.17클라우드에 RDB를 배포할 때 그냥 EC2를 사용해서 RDB 실행시키면 되지만, AWS는 운영편의성 및 자동화를 위해 RDS서비스를 제공한다. EC2에 RDB를 직접 배포할 때는 DB 설치, 구성 작업을 직접 수행해야 하고, 백업 및 복구 작업을 수동으로 처리해야 한다. RDS는 초기 설정을 알아서 처리해주고 일정 기간마다 데이터를 백업해 Timestamp 기반 복구를 지원해주고, Multi Availability Zone 배포로 장애 발생 시 자동 복구 기능을 사용하는 등 여러 편의 기능을 제공한다. 읽기 작업을 분산해 트래픽 증가에 대응할 때는 Read Replica를 사용한다.각 복제본들은 원본 데이터베이스로부터 비동기적으로 데이터를 복제하는데.. 덕분에 성능 저하는 없지만 복제 지연이 ..
[AWS] Availability and Scalability
[AWS] Availability and Scalability
2025.01.14AWS에서는 ELB(Elastic Load Balancer)를 사용해 트래픽을 여러 대상에 효율적으로 분신시켜 애플리케이션의 Availability와 Scalability를 높인다. 리버스 프록시처럼 클라이언트의 요청을 로드밸런서가 받아 여러 백엔드 리소스에게 넘겨주는 역할을 수행한다.이 때 트래픽 분산 알고리즘과 Health Check가 적용되고, 트래픽 증감에 따라 ELB는 자동으로 확장되거나 축소된다. 클라이언트에게 백엔드 리소스의 IP 정보를 숨길 수 있어 보안을 강화할 수 있고, 복잡한 설정을 AWS가 자동으로 관리해줘서 개발자는 비즈니스 로직 개발에 집중할 수 있다. 실제로 EC2에 엔진엑스같은 웹서버를 설정해 직접 로드밸런서를 구성할 수도 있지만, ELB가 제공하는 Auto Scailin..
[AWS] EC2 - Elastic Compute Cloud
[AWS] EC2 - Elastic Compute Cloud
2025.01.10EC2는 AWS에서 제공하는 깡통 컴퓨터라고 생각하면 된다. 보통 EBS, ELB, ASG 등 EC2를 더 쉽게 사용할 수 있도록 도와주는 여러 AWS 서비스들과 함께 사용한다. 용도에 따라 CPU, RAM, GPU, 스토리지, OS 등을 선택해 맞춤형 인스턴스를 구성할 수 있고대여한 EC2 인스턴스에 Security Group을 설정해 방화벽을 구성할 수 있다. Security Group은 클라우드 환경에서 수행되는 방화벽으로 AWS가 제공하는 소프트웨어 방화벽으로 생각하면 된다.물리적인 방화벽을 직접 제어하는게 아니고 가상화된 네트워크 수준에서 트래픽을 제어하는 방식으로 작동한다. 설정한 Security Group은 재사용 할 수 있고, 한 번 정의한 그룹을 다른 EC2 인스턴스에도 재사용 할 수 ..
[AWS] IAM - Identity and Access Management
[AWS] IAM - Identity and Access Management
2025.01.06AWS IAM은 클라우드 리소스에 대한 보안 및 접근 제어를 관리하는 서비스이다. 스프링 시큐리티에서 권한과 그룹을 설정하는 것과 유사하다.AWS 계정 내에서 사용자, 그룹, 역할, 정책을 활용해 세분화된 권한을 설정한다. 먼저 계정을 만들고 AWS 웹 콘솔에 접근할텐데.. 여기서 만든 계정은 루트 계정으로, 모든 AWS 서비스에 접근할 수 있는 권한을 가진다. AWS 계정 하나로 여러 IAM 사용자를 만들 수 있고, 각 사용자는 IAM 서비스가 제공하는 권한에 따라 지정된 서비스에만 접근할 수 있다. (ex. 개발자는 EC2, 데이터 분석자는 S3 버킷에만 접근) https://[IAM 아이디].signin.aws.amazon.com/console IAM 사용자들은 각각 고유한 URL을 발급..