스타트업부터 대기업까지 AWS와 함께한 7년
24. Jan. 2018
hello@hbsmith.io
1
/* 오랫동안 쓰면서 경험한, 알게된 것들 */
발표자 소개
• 한종원
• 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 사용 기간”
발표자 소개
• 지난 7년 동안 AWS와 함께
• 8개의 법인 (스타트업에서 대기업까지)
• 서비스 신규 개발부터 3년 이상 운영까지
• 국내 서비스부터 전세계 대상까지
• 팀 구성 2명부터 수십명까지
3
=> 각양각색의 요구 사항과 제한 조건들
만약 AWS가 없었다면?
AWS는 사랑입니다.
4
Troubleshooting
API
HA
DR
Automation
Scale Out
Scale Up
Backup
Migration
Failover
목차
• AWS Account
• VPC
• Dummy EC2
• Lambda (VS) EC2 cron job
5
(예상 발표 시간: 40분)
AWS Account
6
/* Authentication and Authorization */
AWS Account
• 권한(Authorization) 관리 관점에서 크게 2가지로 나뉨
• Root User
• 이메일 주소
• 모든 권한을 가짐
• IAM Users
• 특정 root user에 귀속된 계정
• root user의 권한 중에 일부만 가짐
• 즉, 일부 AWS service 에 대해서만 권한을 부여 가능
7
인감증명서
사원증, 운전면허증
AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Web management console (웹브라우저)
• Programmatic access (REST API, SDK, CLI, 3rd-party SW)
8
AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Web management console (웹브라우저)
• Passwords
• 옵션으로 MFA 설정 (6자리 숫자)
9
Root/IAM user 당 오직 1개
AWS Account
• 인증(Authentication)은 접근 방식에 따라 크게 2가지로 나뉨
• Programmatic access (REST API, SDK, CLI, 3rd-party SW)
• Access/Secret Keys
10
Root/IAM user 에 여러 개 생성 가능
AWS Account
• (권장) 실제 사용자와 AWS 계정을 1:1로 할 것
• 즉, 한 AWS 계정을 IAM user 단위로 여러 명이 나눠쓰지 말 것
• resource ownership 관리가 불가능

11
“이 비싼 EC2 누가 만든거야?”
AWS Account
• (권장) 실제 사용자와 AWS 계정을 1:1로 할 것
• 결제는 ‘consolidated billing’
12
DV, QA는 필요할 때만 운영함.

즉, 운영하지 않을 때는 모든 자원을 terminate 하고,

다시 필요할 때는, 모든 자원을 처음부터 다시 생성함
AWS Account
• 단, AWS Organization 의 기능 중에 하나인 “add account”로

Linked Acccounts를 추가하지 말 것.
13
AWS Organization에서 만든 계정은
비밀번호를 포함해서 모든 개인 정보가 입력되지 않은 계정이므로
나중에 link를 끊기 위해선 복잡한 절차가 발생
VPC
14
VPC
• VPC는 infrastructure의 뼈대
• public/private subnet
• public/private route table
• internet gateway
• NAT gateway
• VPN gateway
• VPC는 network traffic 흐름과

instance(EC2, RDS 등)의 위치를 결정
15
VPC = 가상의 IDC
VPC
• 예시
16
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
VPC
• Elastic Beanstalk 와 함께

쓸 때는 RDS를 위한 VPC를

따로 분리하는 걸 권장
• VPC 간에 peering
18
Elastic Beanstalk 설정을 수정하다가

의도치 않게 RDS가 삭제되는걸 방지
Dummy EC2
19
/* Authentication and Authorization */
Dummy EC2
• 아래 git repo 참고
• EC2를 다운받는 과정
• EC2 안에서 OS 내용 전체를 image로 memory에 올림
• memory에 올라온 image를 file로 EBS에 저장
• file을 내 컴퓨터로 다운로드
20
“EC2 를 다운받아서 내 컴퓨터에서 띄워볼 수 없을까?”
https://github.com/HardBoiledSmith/ectou-export
Dummy EC2
• 아래 검색 사이트에서 ‘awslinux’ 또는 ‘amazon linux’로 검색
• HBSmith 의 awslinux
21
https://app.vagrantup.com/boxes/search
https://app.vagrantup.com/hbsmith/boxes/awslinux
Lambda (VS) EC2 cron job
22
Lambda (VS) EC2 cron job
• 현재 운영 중인 서비스
• REST API 서버 테스트, 모니터링 SaaS
23
=> 비동기, 반복 작업이 많음
https://hbsmith.io
Lambda (VS) EC2 cron job
• 반복 작업을 SQS 에 등록하고,

Lambda 가 처리하는 방식으로 구현
• 문제점:
• 결국 EC2 에서 cron job을

여러 개 돌리는게 더 맞다고 판단
24
“비동기, 반복 작업에 Lambda가 적합한가?”
작업 요청이 불규칙적으로 발생되고,
반복 주기도 계속 변할 수 있기에
다수의 Lambda가 24시간 계속

돌아가는 상황이 발생
https://
s3.amazonaws.com/
lambda-tools/pricing-
calculator.html
Wrap Up
25
Wrap Up
• AWS Account
• VPC
• Dummy EC2
• Lambda (VS) EC2 cron job
26
root/IAM user 사용 기준
Elastic Beanstalk 와 RDS 를 위한 구성
내 컴퓨터에서 운영되는 가상 EC2 만들기
Lambda 가 비용적으로 불리한 경우
감사합니다
hello@hbsmith.io
010-9166-6855
27

20180124 스타트업부터 대기업까지 aws와 함께한 7년

  • 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가 없었다면?
  • 4.
  • 5.
    목차 • AWS Account •VPC • Dummy EC2 • Lambda (VS) EC2 cron job 5 (예상 발표 시간: 40분)
  • 6.
    AWS Account 6 /* Authenticationand Authorization */
  • 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를 끊기 위해선 복잡한 절차가 발생
  • 14.
  • 15.
    VPC • VPC는 infrastructure의뼈대 • public/private subnet • public/private route table • internet gateway • NAT gateway • VPN gateway • VPC는 network traffic 흐름과
 instance(EC2, RDS 등)의 위치를 결정 15 VPC = 가상의 IDC
  • 16.
  • 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가 삭제되는걸 방지
  • 19.
    Dummy EC2 19 /* Authenticationand Authorization */
  • 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
  • 22.
    Lambda (VS) EC2cron job 22
  • 23.
    Lambda (VS) EC2cron job • 현재 운영 중인 서비스 • REST API 서버 테스트, 모니터링 SaaS 23 => 비동기, 반복 작업이 많음 https://hbsmith.io
  • 24.
    Lambda (VS) EC2cron job • 반복 작업을 SQS 에 등록하고,
 Lambda 가 처리하는 방식으로 구현 • 문제점: • 결국 EC2 에서 cron job을
 여러 개 돌리는게 더 맞다고 판단 24 “비동기, 반복 작업에 Lambda가 적합한가?” 작업 요청이 불규칙적으로 발생되고, 반복 주기도 계속 변할 수 있기에 다수의 Lambda가 24시간 계속
 돌아가는 상황이 발생 https:// s3.amazonaws.com/ lambda-tools/pricing- calculator.html
  • 25.
  • 26.
    Wrap Up • AWSAccount • VPC • Dummy EC2 • Lambda (VS) EC2 cron job 26 root/IAM user 사용 기준 Elastic Beanstalk 와 RDS 를 위한 구성 내 컴퓨터에서 운영되는 가상 EC2 만들기 Lambda 가 비용적으로 불리한 경우
  • 27.