목록DevOps/AWS (30)
devops

the ecs service cannot be updated due to an unexpected error: TaskDefinition is inactive CodeDeploy로 ECS Blue-Green Service를 생성해서 테스트하는 와중에 발견한 에러다. Codebuild에서부터 Deploy까지 taskdef.json 파일도 Copy했는데 TaskDefinition이 비활성화되었다는 에러가 뜬다. taskdef.json 파일이 없는게 아니라, 설정에 문제가 발생했다는 의미다. 그래서 ECS Cluster를 통해서 Task를 실행하면 문제가 없지만, Codedeploy 혹은 Codepipeline을 통해서 서비스가 작동하면 문제가 발생한다. (taskdefinition 관련 설정이 실행되기 때문..

개발을 위해서 용도와 목적에 따라 여러 Account를 활용해서 AWS 리소스를 사용한다. AWS CodePipeline은 일련의 CI/CD 과정을 통합한 서비스로, 운영 Account에서 여러 Account들의 CI/CD를 관리할 수 있어야 한다. 이 포스팅에서는 운영 Account에서 소스코드를 받아 빌드하여 Artifact를 S3에 보관하는 것을 진행하고, 나머지 CodeDeploy만 다른 Account에서 배포하는 아키텍처를 구성해봤다. 이를 위해 Account, 리소스 간 연결을 위한 Role 생성과 리소스의 데이터 보호에 사용되는 KMS를 통해서 AccountA의 CodePipeline을 중심으로 AccountB, AccountC에 배포할 수 있는 위 아키텍처를 구성한다. 2. 구성방법 2.1..

Kinesis는 데이터를 실시간으로 수집하고 ETL과 전송까지 담당하는 AWS의 서비스다. Data Stream을 실시간으로 수집하는 Kinesis Data Stream은 레코드를 직접 수집하는 것도 가능하지만, API Gateway가 프록시하는 것도 가능하다. 단순히 PutRecord하는 것 뿐만아니라, API Gateway에서 요청에따라 Stream 생성과 삭제, ListRecord도 가능하다. 콘솔 상에서 설정하는 방법과 Terraform에서 어떻게 설정하는지도 정리해보려고 한다. Kinesis 데이터 스트림의 API Gateway 프록시를 생성해보자 1) REST API 생성 2) streams 리소스 생성후, 하위 리소스로 다음과 같이 Stream-name 리소스 생성 3) PutRecord를 ..

https://exerror.com/importerror-cannot-import-name-docevents-from-botocore-docs-bcdoc/ [Solved] ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc' - Exception Error To Solve ImportError: cannot import name 'docevents' from 'botocore.docs.bcdoc' Error You need to reinstall awscli. First of all, update your exerror.com 위 링크의 해결책들을 수행하면됨. 주로 aws-cli와 pip를 업데이트 문제인 것으로 보임.
모든 프로세스에 DB를 거치기 때문에 시스템을 고성능으로 유지하기 위해선 DB의 구조와 매커니즘 또한 아주 중요한 요소 중 하나다. 문제상황 : 너무 많은 읽기 연산 해결책 : 데이터베이스 다중화 Primary를 복제해서 Secondary와 Teriary로 분할한다. 다중화(레플리케이션)의 이점 더 나은 성능(읽기 성능은 부 DB의 갯수와 비례한다)과 CQRS(commit command 책임 분리) 안정성 가용성 주 DB에 문제가 생기면 부 DB가 주 DB로 승격된다. 문제상황 : 너무 많은 데이터(~1TB) 해결책 : 파티셔닝(샤딩) 주 특징은 샤딩된, 나눠진 파티션은 고유한 data만 있다. 그래서 해당 DB를 가지고 하나의 노드를 만들어서 부하분산이 가능해진다. 문제 상황 : 낮은 검색 성능 해결책..
https://gre-eny.tistory.com/344

VPC VPC 출시 전에는 AWS 고객들이 생성하는 인스턴스의 가상 네트워크는 제각기였다. 그러나 VPC 출시가 되어서야 고객이 직접 본인이 원하는 계정 별 네트워크인 VPC를 만들고 관리할 수 있게되었다고 한다. *이전에 VPC가 없던 환경을 EC2 Classic이라고 함. 서울 리전에 AZ가 2개가 있는데, 각 AZ에 subnet을 둘 수 있다. 서브넷은 IP가 중복되어선 안된다. 오버랩핑을 피해야하기 때문. AWS에서 권하는 서브넷 설정 /16 VPC (64K addresses) /24 subnets (251 addresses) One subnet per Availability Zone Routing in your VPC 라우트 테이블(Route table)은 패킷이 이동하는 규칙을 포함한다. VP..

DevOps의 주요 특징은 '자동화'다. 코드형 인프라(IaC)는 설정을 코드로 작성하기 때문에 클라우드 인프라스트럭처의 생성, 수정, 삭제를 자동화할 수 있다. 서버, 데이터베이스, 네트워크, 배포 프로세스, 테스트 거의 모든 과정을 코드로 관리할 수 있다. 클라우드 네이티브 환경에서 운영은 모두 코드로 대체된다. 이는 IaC가 인프라스트럭처의 설계도가 될 수 있다는 의미다. IaC의 장점 인프라 생성이 자동화되므로, 오류가 덜 발생하고 안전하다. IaC는 쉽게 공유되고 버전 관리에도 용이하다. 코드와 현재 상태를 비교하여 추후 인프라 상태의 변경에 따르는 위험을 분석, 검증할 수 있다. 배포 과정에 개발자, 관리자 모두 배포하고 통제가능한 환경이 만들어진다. 프로비저닝, 배포, 오케스트레이션 프로비저..

Lambda AWS가 제공하는 서버리스 FaaS 솔루션이다. 함수의 인스턴스를 실행하여 이벤트를 처리한다. FaaS FaaS는 자체 서버시스템이나, 수명이 긴 서버 어플리케이션을 관리하지 않고 백엔드 코드만 실행하는 것 런타임에 대한 사전 세팅 및 준비가 노필요 기능에는 상태 및 실행 기간과 관련 아키텍처 제한이 많다. 수평적 확장은 완전 자동이며 탄력적으로 공급자가 관리할 수 있다. 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해서 트리거된다. Lambda 특징 서버를 프로비저닝하거나 관리할 필요없다. 작성한 코드를 백엔드 서비스로 배포할 수 있다. Lambda를 실행하려면 어플리케이션이나 백엔드 서비스의 코드를 작성하고 이벤트 트리거만 정의하면 된다.(Amazon S3 업로드, Dynamo DB..

명령과 조회의 책임분리를 의미한다. 쉽게 말해서 명령과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심이다. CQRS는 초기 CQS에서 시작하여 확장했다. CQS는 Command Query Separation의 약자다. 시스템에서 처리되는 명령과 조회를 정의하는 핵심 개념이자, 둘을 분리시키는 디자인 패턴이다. 명령은 상태를 변경하는 것이고, 조회는 상태를 반환하는 작업을 의미한다. CQRS와 마이크로서비스 마이크로서비스의 핵심은 서비스별 DB를 각기 다르게 채택하는 것이다. 서비스 성능 향상을 위해 인스턴스를 스케일 아웃하여 여러개로 실행하면 빈번한 명령과 조회 작업으로 리소스 교착상태가 발생한다. 더구나 명령보다 조회 요청이 훨씬 많기 때문에 하나의 서비스 내에 모든 기능을 넣어두면, 조회 요청..