ݺߣ

ݺߣShare a Scribd company logo
당근당근마켓에서 IaC경험
Ochestration
플랫폼개발팀
플랫폼개발팀
조용진 jin@daangn.com
당근마켓 플랫폼팀에서
일을 하게 되었다.
플랫폼팀은 모든 구성원들이
서비스 개발에만 집중할 수 있는
환경을 구성하는 일을 한다.
반복되거나 생략할 수 있는 것들을 자동화를 하며,
서비스의 안정성을 높이는 인프라작업을 한다.
그런 당근마켓에서는
당근마켓에서 IaC경험
달라 이 친구들이랑
달라요. 달라지고 있어요!
응 지표 굳
https://platum.kr/archives/111845?fbclid=IwAR1-kYuqYooHkc59ehatZ58C529EUPzBmVAdTX1GQmIPfM_Z945lErZ618w
응 지표 굳
당근마켓에서 IaC경험
당근마켓에서 IaC경험
당근마켓에서 IaC경험
IaC
말 그대로 인프라를 Code로
옮겨적어 관리하는 것
Infrastructure	as	Code
사용하고 있는 도구들
Vagrant
PackerAnsible
Docker
Terraform
당근마켓의 IaC
당근마켓 인프라는 95% Code로 관리되고 있음
5%는 AWS Parameter Store 및 CircleCI 환경변수
당근마켓의 IaC
EC2의 AMI를 만들어 쓰기도 함
(아직 ElasticSearch같은 Storage만 AMI로 구웠음)
직접 Dockerize하거나 Official Dockerfile을
ECS로 띄우기도 함
Vagrant
PackerAnsible ||
AWS AMI
Dockerfile
||
AWS ECR
EC2
“운영DB로 테스트하고 싶어요.”
“바로 스냅샷 뜨지 말고 bastion Proxy 설정잡아놓은
terraform script한게 있으니 새로 올려서 써요.”
“저 ElasticSearch서버 셋팅 어떻게 되어있는지 보고싶어요”
“Ami-builder repo.에 보면 ansible과 packer로
provisioning script작성되 어있는데 그거 한번 볼래요?”
“혹시 https연결 & htpasswd셋팅 되어있는 nginx Dockerfile있어요?”
“dockerhub에 올려놓은게 있는데 그거 써요. 그리고
Htpasswd넣을꺼면 ECR에 올려놓고 쓰도록 해요”
“테스트 다 끝났으면 올려놓은 인프라 다 지워놓고 퇴근해요”
“넹. (terraform destroy, vagrant destroy, packer ….) ”
“인프라의 재 사용성은 거의 마약 수준임”
“스크립트로 인프라의 개요를 파악할 수 있다.”
“생성 및 파괴가 깔끔함, 클린 인스톨러에게는 개운함을 선사함”
IaC +	CI/CD
||
배포전략
Source Code
IaC + CI/CD = 배포전략
Test Build DockerizeInstall
v1 v2 v3 v5v4 v6
IDLE상태로 ECR(Private)과 Dockerhub(public)에 존재함
Commit Hash
Commit Hash
1. 배포를 할지, 말지
2. 배포를 언제 할지?
3. 배포를 어떤 방식으로 할지?
배포전에 해야할 고민
“오늘 점심 까나리”
https://m.blog.naver.com/muchine98/220262491992 - 너굴님의 마틴파울러 carany release 번역
당근마켓에서 IaC경험
Load Balancer Target Group
v1
v1
v1v1
v1
v1
v1
v1
Round
Robin
Load Balancer Target Group
v1
v1
newv1
v1
v1
v1
v1
Round
Robin Edge 12.5%
If (Test Good)
Load Balancer Target Group
new
new
newnew
new
new
new
new
Round
Robin
물론 이 배포 시나리오가 전부 IaC로 만들어진건 또 아님
Slack Bot이 있고, 배포하는 프로그래밍 소스코드가 작성되어있다.
당근마켓의 뉴비된 입장에서는
“우와.. 저걸 어떻게 했냐….”
싶던 찰나에
드디어 나에게 일이 떨어졌다.
“@Jin, ElasticSearch Version 올려주세요ĝ
갵ӗ살
???!!갵ӗ살
- 예고편 -
“그래서 데이터 백업은 어떻게 뜨는데?!”
“뭐? 형태소 분석기 mecab-kr이 사망했어?”
“뭐…. 사전업데이트를 하는데 껏다켜야한다고?”
“2.X에서 6.x에서 바뀐게 뭐이리 많은데!!!!”
“아니 쒸.. 지금 6.7.2 이미지 다 만들어 놓으니까
인증 기능이 무료로 풀린 6.8이 어제 나왔다고?”
“후.. 그냥 AWS ElasticSearch 쓸까요….?”
당근마켓에서 IaC경험
끝
당근마켓에서 IaC경험
이야기 하고싶은 것(사실 궁금한 것..)
1. ECS에서 Fargate와 EC2
2. ElasticSearch Container로 올리면.. Storage문제는?
이야기 하고싶은 것(사실 궁금한 것..)
3. Terraform을 사용하는데, terraform.state 팀원들 마다
다 다른 상태로 겹침 Terraform관리 전략…. ? Dropbox...?

More Related Content

당근마켓에서 IaC경험