들어가며 AWS Lambda와 같은 서버리스 컴퓨팅 환경에서 비동기(Asynchronous) 처리를 다룰 때에는 함수 실행이 종료 되기 전에 프로그램이 먼저 종료되는 문제가 발생할 수 있다. 람다가 실행을 완료하고 종료될 때, 백그라운드에서 실행 중인 프로세스나 작업을 모두 종료시켜버리기 때문이다. 이러한 특성 때문에 비동기로 실행시킨 작업이 완료되기 전에 람다 함수가 먼저 종료된다. 비동기식으로 작성하여 운영중이던 챗봇 서비스를 클라우드로 마이그레이션할 때 직접 겪었던 문제를 소개하고, 람다 함수를 사용할 때 동기식 호출과 비동기식 호출의 차이와 장단점을 알아본다. 문제 람다 함수에는 수명주기(Lifecycle)가 있는데, 람다 함수는 요청이 발생했을 때 필요에 의해서만 이벤트를 처리하고 실행이 완료되..
들어가기 AWS lambda는 외부 모듈의 실행을 바로 지원하지 않는다. 로컬에서는 pip install 을 통해 바로 설치 및 실행할 수 있지만 서버리스 환경에서는 실행시점마다 같은 실행 환경을 보장하지 않는다. 함수의 실행 시점에만 인스턴스를 띄워서 지정한 메모리 용량과 시간만큼만 실행한다. Amazon Linux v2 환경에서 동작하는 것으로 보이나 사용자가 시스템 환경까지 많은 부분 관여할 수 없다. 코드만 실행하면 되는 목적으로 사용하기에는 가장 적합한 환경이다. Lambda Layer 람다 레이어를 사용하여 외부 모듈을 로드하여 사용할 수 있다. 다음의 과정을 따른다. 1. 로드할 모듈 로컬에 설치 pip의 옵션을 이용하여 지정한 폴더에 설치한다. -t 옵션은 모듈을 설치할 타겟(폴더)를 지정..
AWS KMS AWS Key Management Service - KMS는 데이터 암호화를 활성화하기 위해 암호화 키를 생성하고 제어할 수 있는 관리형 암호화 서비스이다. KMS는 AWS 서비스 전반과 애플리케이션 내에서 데이터를 암호화할 수 있는 고가용성 키 스토리지, 관리 및 감사 솔루션을 제공한다. KMS는 하드웨어 보안 모듈(HSM)을 사용하여 FIPS 140-2 암호화 모듈 검증 프로그램을 통해 키를 보호하고 검증한다. KMS는 여러 AWS 서비스와 원활하게 통합되어 해당 서비스의 데이터를 쉽게 암호화할 수 있다. AWS CloudTrail과 통합되어 암호화 키 사용 로그를 제공하여 감사, 규정 및 규정 준수 요구사항을 충족할 수 있도록 지원한다. KMS는 regional 하며, 키는 키가 생성..
DynamoDB 완전관리형 NoSQL 데이터베이스 서비스 모든 양의 데이터를 저장 및 검색하고 모든 수준의 요청 트래픽을 처리할 수 있는 간단하고 비용 효율적인 서비스 원활한 확장성과 함께 빠르고 예측 가능한 성능 제공 고객은 하드웨어 프로비저닝, 설정 및 구성, 복제, 소프트웨어 패치 또는 클러스터 확장에 대해 걱정할 필요 없이 분산 데이터베이스 운영 및 확장에 따른 관리 부담을 AWS로 분산할 수 있다. DynamoDB 테이블에는 고정된 스키마가 없으며, 테이블은 항목으로 구성되며 각 항목은 서로 다른 수의 속성을 가질 수 있다. DynamoDB는 AWS 리전에 있는 세 개의 시설에 데이터를 동기식으로 복제하여 고가용성과 데이터 내구성을 제공한다. DynamoDB는 빠른 인플레이스 업데이트를 지원한다..
Bastion Host? 보안 접근을 제어하기 위해 사용되는 중간 단계 호스트이다. 일반적으로 클라우드 환경에서는 인터넷을 통해 직접적인 접근을 허용하지 않고, 보안을 강화하기 위해 네트워크의 외부에서 내부 리소스에 접근하는 데에는 추가적인 계층이 필요하다. Bastion은 이러한 보안 계층의 한 예시이다. Bastion 호스트는 인터넷에 직접 노출되는 공용 IP 주소를 가지고 있으며, 사용자는 bastion을 통해 내부 네트워크에 접근할 수 있다. 일반적으로 SSH (Secure Shell)를 통해 bastion에 로그인한 다음, bastion을 통해 내부 리소스로 접근할 수 있다. Bastion을 운영하는 방식은 다음과 같은 단계로 이루어진다: 1. Bastion 인스턴스 생성: 클라우드 제공업체의 ..
AWS Aurora AWS RDS Aurora는 고급 상용 데이터베이스의 속도 및 안정성과 오픈 소스 데이터베이스의 단순성 및 비용 효율성을 결합한 관계형 데이터베이스 엔진이다. 완전 관리형 MySQL 및 PostgreSQL 호환 관계형 데이터베이스 엔진으로, MySQL로 개발된 애플리케이션을 거의 또는 전혀 변경하지 않고도 Aurora로 전환할 수 있다. 대부분의 MySQL 애플리케이션을 변경할 필요 없이 MySQL의 최대 5배, PostgreSQL의 최대 3배의 성능을 제공한다. 프로비저닝, 패치, 백업, 복구, 장애 감지 및 복구와 같이 시간이 많이 걸리는 작업을 RDS가 데이터베이스를 완벽하게 관리한다. 데이터베이스 사용량에 따라 데이터베이스 성능에 영향을 주지 않고 10GB에서 128TiB까지 ..
관계형 데이터베이스 서비스(RDS) 관계형 데이터베이스 서비스 - RDS는 클라우드에서 관계형 데이터베이스를 쉽계 설정, 운영, 확장할 수 있는 웹 서비스이다. 업계 표준 관계형 데이터베이스를 위한 비용 효율적이고 크기 조정이 가능한 용량을 제공하며 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 일반적인 데이터베이스 작업을 관리한다. 기능 및 이점 CPU, 메모리, 스토리지, IOP를 독립적으로 확장할 수 있다. 백업, 소프트웨어 패치, 자동 장애 감지 및 복구를 관리한다. 필요에 따라 자동 백업을 수행하거나 수동 백업을 트리거할 수 있다. 백업을 사용하여 데이터베이스를 복원할 수 있으며, 복원 프로세스가 안정적이고 효율적으로 작동한다. 기본 인스턴스와 문제 발생 시 원활하게 FailOv..
Elastic Beanstalk AWS Elastic Beanstalk는 애플리케이션을 실행하는 인프라에 대해 걱정할 필요 없이 AWS 클라우드에서 애플리케이션을 신속하게 배포하고 관리할 수 있도록 도와준다. 선택이나 제어를 제한하지 않고 관리 복잡성을 줄여준다. 애플리케이션에 대해 간단한 업로드 만으로 자동화된 인프라 관리와 코드배포를 지원하며 다음을 포함한다. 애플리케이션 플랫폼 관리 용량 프로비저닝 로드 밸런싱 자동 확장 코드 배포 상태 모니터링 Elastic Beanstalk는 애플리케이션이 업로드되면 자동으로 환경을 시작하고 코드를 실행하는 데 필요한 AWS 리소스를 생성 및 구성된다. 환경이 시작된 후에는 관리하고 새 애플리케이션 버전을 배포하는 데 사용할 수 있다. Elastic Beanst..
ECS (EC2 Container Service) ECS(AWS EC2 Container Service) ECS는 확장성이 뛰어난 고성능 컨테이너 관리 서비스로, Docker 컨테이너를 지원하며 관리형 EC2 인스턴스 클러스터에서 애플리케이션을 실행할 수 있다. ECS는 지역 내 여러 AZ에서 애플리케이션 컨테이너를 고가용성 방식으로 실행하는 것을 간소화하는 리전 서비스이다. 클러스터 관리 인프라를 설치, 운영 및 확장할 필요가 없다. 자체 사용자 정의 스케쥴러 또는 타사 스케쥴러를 통합하여 비즈니스 또는 애플리케이션별 요구 사항을 충족할 수 있다. AWS Fargate와 함께 서버리스 옵션을 제공한다. ECS 실행 유형 컨테이너를 실행하기 위해 클러스터에서 EC2 인스턴스를 구성 및 배포한다. 예제 =..
Auto Scaling Auto Scaling & ELB Auto Scaling을 사용하면 동적으로 변화하는 EC2 인스턴스 제품군 전체에 걸쳐 트래픽을 쉽게 라우팅할 수 있다. Auto Scaling은 자동 확장 그룹의 인스턴스로 들어오는 모든 트래픽에 대한 단일 접점 역할을 한다. Auto Scaling은 EC2 인스턴스를 동적으로 추가 및 제거하는 한편, Elastic Load Balancing은 하나의 인스턴스에 과부하가 걸리지 않도록 트래픽을 최적으로 라우팅하여 들어오는 요청을 관리한다. Auto Scaling은 사용자 수요가 증가하면 자동으로 EC2 인스턴스 수를 늘리고, 수요가 감소하면 EC2 인스턴스 수를 줄이는 데 도움이 된다. ELB 서비스는 들어오는 웹 트래픽을 실행 중인 모든 EC2..