1. 스타트업부터 대기업까지 AWS와 함께한 7년
24. Jan. 2018
hello@hbsmith.io
1
/* 오랫동안 쓰면서 경험한, 알게된 것들 */
2. 발표자 소개
• 한종원
• Python과 Cloud Infra, Lean/Agile 방법론 그리고 애플의 제품을 사랑.
• 2012년 석사 학위를 마치고, startup을 시작
(이때부터 AWS를 production level에서 사용)
• '의미가 있는 일을, 올바르게 하고 싶다.'
• 경력
• (현) DevOps 전문 스타트업 ‘HB Smith’ 대표
• 택시 O2O 서비스 스타트업 ‘Kanizsa Lab’의 backend server / infra devops 담당
• Cloud computing 전문 스타트업 'A2 company' co-founder (‘KINX’에 인수합병)
• NEXON 'MapleStory 국내 Live Team'에서 DBA, SA로 근무 (산업 기능 요원)
2
https://www.linkedin.com/in/addnull/
https://hbsmith.io
“Startup 경력 = AWS 사용 기간”
3. 발표자 소개
• 지난 7년 동안 AWS와 함께
• 8개의 법인 (스타트업에서 대기업까지)
• 서비스 신규 개발부터 3년 이상 운영까지
• 국내 서비스부터 전세계 대상까지
• 팀 구성 2명부터 수십명까지
3
=> 각양각색의 요구 사항과 제한 조건들
만약 AWS가 없었다면?
7. AWS Account
• 권한(Authorization) 관리 관점에서 크게 2가지로 나뉨
• Root User
• 이메일 주소
• 모든 권한을 가짐
• IAM Users
• 특정 root user에 귀속된 계정
• root user의 권한 중에 일부만 가짐
• 즉, 일부 AWS service 에 대해서만 권한을 부여 가능
7
인감증명서
사원증, 운전면허증
8. AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Web management console (웹브라우저)
• Programmatic access (REST API, SDK, CLI, 3rd-party SW)
8
9. AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Web management console (웹브라우저)
• Passwords
• 옵션으로 MFA 설정 (6자리 숫자)
9
Root/IAM user 당 오직 1개
10. AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Programmatic access (REST API, SDK, CLI, 3rd-party SW)
• Access/Secret Keys
10
Root/IAM user 에 여러 개 생성 가능
11. AWS Account
• (권장) 실제 사용자와 AWS 계정을 1:1로 할 것
• 즉, 한 AWS 계정을 IAM user 단위로 여러 명이 나눠쓰지 말 것
• resource ownership 관리가 불가능
11
“이 비싼 EC2 누가 만든거야?”
12. AWS Account
• (권장) 실제 사용자와 AWS 계정을 1:1로 할 것
• 결제는 ‘consolidated billing’
12
DV, QA는 필요할 때만 운영함.
즉, 운영하지 않을 때는 모든 자원을 terminate 하고,
다시 필요할 때는, 모든 자원을 처음부터 다시 생성함
13. AWS Account
• 단, AWS Organization 의 기능 중에 하나인 “add account”로
Linked Acccounts를 추가하지 말 것.
13
AWS Organization에서 만든 계정은
비밀번호를 포함해서 모든 개인 정보가 입력되지 않은 계정이므로
나중에 link를 끊기 위해선 복잡한 절차가 발생
17. VPC
• 보안 관점에서 VPC
• Security groups
EC2 단위의 방화벽 역할
(in/out-bound allow rule only)
• NACL
subnet 단위의 방화벽 역할
(in/outbound allow/deny rules)
• Flow logs
subnet 안의 IP traffic을 CloudWatch로 기록 (GuardDuty와 연동 가능)
17
18. VPC
• Elastic Beanstalk 와 함께
쓸 때는 RDS를 위한 VPC를
따로 분리하는 걸 권장
• VPC 간에 peering
18
Elastic Beanstalk 설정을 수정하다가
의도치 않게 RDS가 삭제되는걸 방지
20. Dummy EC2
• 아래 git repo 참고
• EC2를 다운받는 과정
• EC2 안에서 OS 내용 전체를 image로 memory에 올림
• memory에 올라온 image를 file로 EBS에 저장
• file을 내 컴퓨터로 다운로드
20
“EC2 를 다운받아서 내 컴퓨터에서 띄워볼 수 없을까?”
https://github.com/HardBoiledSmith/ectou-export
21. Dummy EC2
• 아래 검색 사이트에서 ‘awslinux’ 또는 ‘amazon linux’로 검색
• HBSmith 의 awslinux
21
https://app.vagrantup.com/boxes/search
https://app.vagrantup.com/hbsmith/boxes/awslinux
23. Lambda (VS) EC2 cron job
• 현재 운영 중인 서비스
• REST API 서버 테스트, 모니터링 SaaS
23
=> 비동기, 반복 작업이 많음
https://hbsmith.io
24. Lambda (VS) EC2 cron job
• 반복 작업을 SQS 에 등록하고,
Lambda 가 처리하는 방식으로 구현
• 문제점:
• 결국 EC2 에서 cron job을
여러 개 돌리는게 더 맞다고 판단
24
“비동기, 반복 작업에 Lambda가 적합한가?”
작업 요청이 불규칙적으로 발생되고,
반복 주기도 계속 변할 수 있기에
다수의 Lambda가 24시간 계속
돌아가는 상황이 발생
https://
s3.amazonaws.com/
lambda-tools/pricing-
calculator.html
26. Wrap Up
• AWS Account
• VPC
• Dummy EC2
• Lambda (VS) EC2 cron job
26
root/IAM user 사용 기준
Elastic Beanstalk 와 RDS 를 위한 구성
내 컴퓨터에서 운영되는 가상 EC2 만들기
Lambda 가 비용적으로 불리한 경우