개발 이야기/인프라 구축 및 운영
-
Linux에서 AWS ECR Docker 이미지 설치하기개발 이야기/인프라 구축 및 운영 2022. 7. 8. 12:05
우선 aws congifure 설정이 필요합니다. 이와 관련된 내용은 이 링크(link)를 확인하시면 됩니다. 사용하는 계정에는 ECS Access 권한이 필요합니다. docker 설치 및 실행 우선 도커를 설치하면 됩니다. (아래 내용은 AWS Linux2를 기준으로 설명합니다.) sudo yum install docker -y sudo systemctl start docker 그리고 ec2-user에 docker group 권한을 설정합니다. sudo usermod -a -G docker ec2-user 설정 후 재접속해서 id 명령으로 ec2-user 계정에 docker 그룹이 할당된 것을 확인합니다. 이제 ecr 인증을 진행합니다. aws ecr get-login-password --region ..
-
CDK로 AWS 인프라 구축하기 - #마지막개발 이야기/인프라 구축 및 운영 2022. 6. 28. 12:40
원래 #5로 끝났지만 주의할 사항들이 몇 있어 간단히 정리하고 정말 마무리 하려 합니다. 1. 여러 스택을 정의한 경우 > cdk deploy/destroy stack01 // 이렇게 명시해서 특정 스택만 배포/삭제 > cdk deploy/destroy --all // 정의된 모든 스택을 배포/삭제 2. 분기 처리 방법 local의 config, env 파일 등에 정의한 내용을 활용하여 내부 분기처리를 할수 있습니다. 예를들면 config.json 파일에 배포할 지역을 정의하고 이를 읽어 처리할 수 있습니다 // config.json 의 예 { "regions" : ["us-east-2", "ap-northeast-2"] } 혹은 위와 같은 내용은 ddb에 업데이트하고 deploy/destroy 시 이를..
-
CDK로 AWS 인프라 구축하기 - #5 scale out 테스트개발 이야기/인프라 구축 및 운영 2022. 6. 21. 12:40
이번에는 CDK로 구축한 서비스가 과부하 상태에서 ECS에 설정한 대로 부하를 잘 분산하는지 확인해 보겠습니다. 우선 ECR에 등록할 간단한 API 서비스를 만듭니다. 이 예제에서는 /calc 라는 인터페이스를 통해 랜덤한 수를 소인수분해하고 해당 결과를 돌려주도록 하는 샘플을 추가해 보았습니다. CPU 부하를 기준으로 스케일아웃을 설정할 것이므로 수초 동안 연산을 수행 후 결과를 돌려주도록 합니다. import random from fastapi import FastAPI app = FastAPI() @app.get("/") def health_check(): return 200 @app.get("/calc") async def funcCalc(): x = random.randrange(99999999..
-
CDK로 AWS 인프라 구축하기 - #4 ECS Cluster 구성개발 이야기/인프라 구축 및 운영 2022. 6. 17. 14:05
이번에는 ECS를 사용해 간단한 웹 서비스를 구성하는 방법을 살펴 보겠습니다. 웹 서비스는 사내에서 docker로 빌드되어 ECR로 업데이트 되어 있다고 가정하고 아래와 같은 절차를 통해 웹 서비스가 된다고 가정합니다. ECS Cluster의 Task들은 private subnet에서 실행되므로 ECR 접근을 위해 VPC Endpoint를 사용합니다.(참고 문서 링크) 유저들은 public subnet에 설치된 ALB(80 Port)로 접속을 시도 (실 서비스에서는 앞 단에 Route53을 설정하겠지만 여기서는 ALB로 바로 연결한다고 가정합니다.) ALB는 private subnet의 ECS Cluster(3000 Port)로 포워딩합니다. 이를 간단히 도식화하면 아래와 같습니다. 아래 예제 코드 중 ..
-
CDK로 AWS 인프라 구축하기 - #3 보안 그룹과 RDBMS개발 이야기/인프라 구축 및 운영 2022. 6. 14. 12:26
이번에는 보안 그룹을 생성해보고 MySQL ( serverless v1 포함)를 추가해 보겠습니다. 보안그룹 생성은 중복되는 요소들이 많아 별도의 생성함수를 만들고, 보안 그룹을 중복 사용되는 경우도 있으므로 dictionary에 저장하여 관리하고 사용할 수 있도록 만들어 보겠습니다. 아래는 보안 그룹을 생성하는 함수의 예 입니다. . //credential과 database 관련 lib를 import import * as rds from 'aws-cdk-lib/aws-rds'; import { Credentials, DatabaseInstance, DatabaseInstanceEngine, DatabaseSecret, MysqlEngineVersion } from 'aws-cdk-lib/aws-rds'..
-
CDK로 AWS 인프라 구축하기 - #2 VPC 생성 코드 작성하기개발 이야기/인프라 구축 및 운영 2022. 6. 13. 15:19
이번에는 API 공신 문서를 살펴보고 AWS Console 에서 VPC 생성 시 생성되는 모든 리소스를 직접 생성하는 재활용 가능한 코드를 만들어 보겠습니다. API 문서 API 공식 문서 링크 - https://docs.aws.amazon.com/cdk/api/v2/docs/aws-construct-library.html 현재 CDK 는 v1과 v2 (https://docs.aws.amazon.com/cdk/api/versions.html)를 제공하고 있으며 우리는 v2를 기준으로 알아보겠습니다. API 문서를 살펴보신 분은 어떤 리소스를 생성하는 몇 가지 방법이 있다는 것을 알고 계실 겁니다. 예를 들어 VPC를 생성할 때 class Vpc를 사용하거나 혹은 class CfnVPC를 사용할 수 있습니..
-
CDK로 AWS 인프라 구축하기 - #1 CDK 둘러보기개발 이야기/인프라 구축 및 운영 2022. 6. 7. 13:03
Cloud Orchestration, K8s, CloudFormation, ECS 등의 원론적인 이야기에 대해서는 굳이 여기서 언급하지 않고 참고가 될 좋은 링크를 아래 추가합니다. https://www.vmware.com/topics/glossary/content/cloud-orchestration.html cloud orchestration이란? https://github.com/kubernetes/kubernetes Kubernetes https://aws.amazon.com/ko/containers/ AWS의 컨테이너 https://docs.aws.amazon.com/cdk/v2/guide/home.html AWS CDK Guide https://docs.aws.amazon.com/cdk/api/..
-
AWS로 서비스 구축하기 #02 - Fargate task를 Private subnet 으로 전환하기개발 이야기/인프라 구축 및 운영 2022. 4. 7. 12:50
#01에서는 배포 과정과 ECR/ECS를 이용해 서비스 인프라를 구축하는 과정을 간단히(?) 살펴봤습니다. 이 글에서는 public subnet로 설정했던 fargate task(이하 task)를 private vpc로 수정해 외부에서는 alb만을 통해서 접속할 수 있도록 보안을 강화하고 비용을 줄이도록 개선해 보겠습니다. 이번글은 다음과 같은 순서로 진행됩니다. 기존 ECS 정리하기 Private VPC로 ECS 설정하기 1. 기존 ECS 정리하기 이전에 만들었던 ECS를 우선 정리해보겠습니다. 클러스터는 굳이 지울 필요없습니다. 내부의 서비스와 실행중인 task들만 지우면 됩니다. ECS -> 클러스터 -> "서비스" 탭 -> 삭제할 서비스 선택 -> 삭제 후 실행중인 작업도 종료합니다. 2. Pri..