본문 바로가기

HANDS-ON PROJECTS/DEVOPS6

[DEVOPS] Deployed 3-tier Web App on ECS Cluster by using AWS CodePipeline(Blue-green) TABLE OF CONTENTS 1. Provisioning ECS Cluster지금까지는 EC2라는 가성머신 위에 소스를 직접 배포하는 형태로 서비스를 배포해보았지만 이렇게 되면 소규모 서비스 밖에 구축을 하지 못하므로 이제는 이러한 소스를 Docker image로 만들어서 ECS Cluster에 Docker Container 형태로 배포를 하자. 이렇게 함으로서 규모가 큰 서비스까지 배포할 수 있게 된다Docker Registry는 AWS의 ECR을 사용하도록 하고, 개발 환경을 Local PC로 진행하는게 아니라 Cloud9(EC2 Runtime environment 제공; OpenVPN과 같은 바스챤 host 없이도 개발 진행을 가능하도록 하는 용도)을 사용하도록 하자. ECR Repository.. 2024. 6. 26.
[DEVOPS] Architected 3-tier Web App on IaaS by using Jenkins & Ansible CICD pipeline with logging, Backup and Monitoring/Alarming Solution TABLE OF CONTENTS 1. Making VPC아래의 2가지 아키텍쳐를 구현한다.위의 아키텍쳐에서 베스쳔 호스트로 OpenVPN용 EC2를 public subnet에 생성하도록 하자. VPC 생성 후 그 안에 Subnet을 생성한 후 routing table 만들어보기. 여기서 만들 아키텍쳐이다.AWS Console에서 vpc를 CIDR 10.1.0.0/16 대역으로 만들어주자.이후 VPC에서 Subnet을 6개를 생성해주자. 위의 subnet 이름에서 뒤에 붙은 알파벳(a, c)은 해당 Region의 AZ으로 ap-northeast-2a와 ap-northeast-2c 중에 하나를 선택하는 것이다.언제나 순서는 Region 선택 → VPC 생성(CIDR 대역 만들기) → Subnet 생성하면서 .. 2024. 6. 26.
[DEVOPS] Asynchronously Integrated ChatGPT on Web App by using SQS on Serverless Architecture TABLE OF CONTENTS 1. How to use OpenAI API in my web app?아키텍쳐를 보자.React Web App을 Static Hosting하기 위해서 S3를 앞에 박아두자. 그 후 유저가 채팅을 입력하게 되면 API GW(REST)로 Lambda가 호출이 되서 이 Lambda에 채팅이 입력된 후 DynamoDB에 저장을 한다. 그 다음 SQS Queue에다가 전달을 해서(왜 바로 Lambda로 보내지 않고 SQS Queue에 전달을 하는가?) 다른 Lambda가 SQS를 구독해서 받아다가 실제 ChatGPT에게 API기반의 request를 해서 response를 받아오면 이걸 다시 API GW(Web Socket)을 통해서 User에게 실시간으로 전달해준다.Frontend.. 2024. 6. 26.
[DEVOPS] Decreased RDS Cost by 20% by making RDS Scheduler with EventBridge on Serverless Architecture TABLE OF CONTENTS 1. How can I decrease cost of RDS usage?RDS는 정지되면 7일만 정지되고 그 이후에는 자동적으로 다시 살아나므로 이번 실습에서는 lambda가 정지를 하고 일주일에 한 번씩 RDS가 사용되는지 체크하고 사용 안되면 정지시키는 RDS Scheduler 격인 lambda를 만들어보도록 한다.일단 동작 Flow를 보도록 하자.일단 이번에는 api gateway를 통해 lamba를 trigerring시켜서 rds를 멈추게 만든거 까지만 구현을 하고 이걸 나중에 알아서 EventBridge를 사용해서 cron 성격으로 변환해주도록 하자. 작업 순서는 아래와 같다.일단 rds가 뜰 subnet Group을 만든 후 RDS 인스턴스/클러스터를 이 sub.. 2024. 6. 26.
[DEVOPS] Automated Slack Command by using AWS Lambda with Golang TABLE OF CONTENTS 1. How can I use Slack with AWS Lambda?Slack과 Lambda와 S3를 연계해서 Slack Command로 S3 image를 가져 오는 자동화를 구현해보자.Slack은 요즘 대다수의 기업에서 사용되는 메신저 서비스로 AWS와 굉장히 많이 호환이 되게 되는데 slack에서 /(slash) command와 thrid party service와 연결해서 수많은 솔루션을 구축할 수 있게 된다.가령, 실무에서 DataDoc의 Metric 정보를 slash command를 이용해서 최근 30분치의 데이터를 바로 볼 수 있도록 하는 solution 등을 구축하게 된다.아래는 오늘 진행하는 자동화 주제이다.Slack User가 /(keyword)를 입력하.. 2024. 6. 26.
[DEVOPS] Designed CLI by using Cobra Framework with Golang TABLE OF CONTENTS 1. What is Cobra Framework?Golang + Cobra(viper library가 들어있는 framework)로 나만의 CLI를 만들어보도록 하자.이번에 만들 CLI는 Config Manager로 Config를 CRUD할 수 있는 CLI를 만들도록 하자.Golang을 이용해서 CLI를 만드는 툴(라이브러리/프레임워크)은 다양하다. cobra, gcli, Go CLI Library, go-flags, Kingpin 등등. Cobra도 이 중 하나로 특히 Cobra는 kubectl에서 K8S 상에서 내가 원하는 동작을 하는 CLI를 만들때도 사용하는 프레임워크다. 2. Designing CLI 일단 git repo에서 해당 프로젝트를 끌어오게 되면 아래와 .. 2024. 6. 26.