SlideShare a Scribd company logo
모두싸인 AWS 사용기
CTO 정승현
간편 전자 계약 서비스
모두싸인
CTO 정승현
모두싸인 X AWS 성장기
모두싸인의 AWS 성장기
모두싸인의 AWS 성장기
모두싸인의 AWS 성장기
모두싸인의 AWS 성장기
MVP 버전 개발 시작
필요한 것
프로젝트를 24시간 가동할 서버
데이터를 저장할 MySQL 기반 데이터베이스 서버
계약서, 서명 등을 저장할 파일 서버
외부에서 접근 할 수 없는 폐쇠된 네트워크
프로젝트를 24시간 가동할 서버 데이터를 저장할 MySQL 기반 DB 서버
계약서, 서명 파일 서버 서비스에 맞는 가상 네트워크 구성할 수 있는 VPC
Amazon
S3
Amazon EC2 Amazon
RDS
이메일 서비스
개발된 서비스에서 쉽게 추가
가격을 저렴하게
Transactional한 이메일만 지원해도 된다
DKIM, SPF, DMARC 지원 (계약 서비스다 보니)
개발을 하다보니 이메일을 보내야 되는 기능이 생김
필요한 것
AWS 환경에 익숙함(개발 편의성)
건당 가격이 다른 서드파티 서비스 보다 저렴
DKIM, SPF, DMARC 지원
요구 사항에 적합하여 AWS SES 선택
Amazon
S3
Amazon EC2 Amazon
RDS
Amazon
SES
세션 데이터
세션 데이터를 저장할 인메모리 데이터베이스 서버
세션 정보 가져오는 것을 실제 서비스 데이터베이스에
영향을 주지않고 기존 데이터베이스보다 빠르게 처리
할 수 있는 데이터베이스를 이용하자
필요한 것
인메모리 데이터베이스는 Redis로 결정
Redis 지원하는 ElasticCache로 서버 관리를 쉽게
클러스터링 지원
Amazon
S3
Amazon EC2
Amazon
RDS
Amazon
SES
Amazon
ElastiCache
서비스 배포
자체 도메인
HTTPS 엔드포인트
Blue-Green 배포 플로우
Single Point Of Failure 완화
로드밸런싱
드디어 MVP 버전 서비스 배포
필요한 것
쉬운 인터페이스
다른 AWS 서비스와 연동하기 쉬움
로드밸런싱
HTTPS 엔드포인트 지원
블루그린 배포 플로우 가능
Multi-AZ 지원
Amazon
S3
Amazon EC2
Amazon
SES
Amazon
Route 53
Amazon EC2
Availability Zone a
Availability Zone c
Load Balancer
Amazon
RDS
Amazon
ElastiCache
요동치는 트래픽
트래픽이 높아 질 때 충분한 서버 배치
트래픽이 작을 때는 비용을 줄이기 위해 최소한의 서버만 배치
서비스 특성상 업무시간(약 8시 ~ 19시)에 트래픽이 많고
이후 시간 또는 주말에는 트래픽이 작다
이메일 마케팅 또는 프로모션시 트래픽 급증 대비 필요
필요한 것
EC2 AutoScaling을 사용하여 트래픽에 따라
유동적으로 서버를 배치할 수 있도록 하자
Amazon
S3
Amazon EC2
Amazon
SES
Amazon
Route 53
Amazon EC2
Availability Zone a
Availability Zone c
Load Balancer
Auto Scaling group
Auto Scaling group
Amazon
RDS
Amazon
ElastiCache
프론트엔드와 백엔드 분리
프론트를 배포할 웹서버 필요(정적 파일 배포)
HTTPS 지원 필요
웹 프론트 빌드 후 CLI로 간단히 배포 가능
기존에는 개발팀에서 서비스의 모든 개발을 공유하다가
프론트엔드팀과 백엔드팀으로 나뉘게 됨
웹 뿐만 아니라 이후 앱을 위해
필요한 것
S3를 통한 hosting와 CloudFront의 조합으로 쉽게 배포 가능
HTTPS 지원
Route53를 연동하여 도메인 쉽게 설정
HTTP에서 HTTPS Redirection 지원
AWS-CLI로 간단히 배포 가능
덤으로 전세계 엣지에서 낮은 지연 가능
Amazon
S3
Amazon EC2
Amazon
SES
Amazon
Route 53
Amazon EC2
Availability Zone a
Availability Zone c
Load Balancer
Auto Scaling group
Auto Scaling group
Amazon Clou
dFront
Amazon
S3
Amazon
RDS
Amazon
ElastiCache
이렇게 평온한 날들을 보내던 도중
서버팀 제안
우리 아키텍쳐를
마이크로서비스로 하자
그래, 우리 해봅시다
근대 마이크로서비스라고 들어도 봤고,
좋은거 같던데 그게 정확히 뭐죠?
현재(모놀리식)의 문제점
프로젝트가 하나에 모여있기 때문에
프로젝트가 커짐에 따라 한번 변경할 때,
변경사항이 기존 코드에 영향을 미쳐서 버그가 생겨날 것 같은 걱정.
기술 스택을 변경하고 싶은데 작은 변경이라도 프로젝트 전체 변경 필요.
장애시 모든 서비스 중단.
한 프로젝트안에 CPU를 많이 사용하는 부분,
메모리를 많이 사용하는 부분 등 무조건 최대치로 필요.
배포 규모가 커지고 부담이 크다.
팀원이 늘어남에 따라 프로젝트에 대한 복잡도가 더욱 커짐.
기존 모놀리식한 프로젝트를
각 서비스별로 나누어
기존 문제들을 해결하자
(시간상 마이크로서비스의 장점 생략)
좋은건 알겠는데,
어떻게 구현할까?
나누었을 때, 각각 서비스들의 관리
서비스들을 나누니 나눈만큼 관리해야 된다.
예) 계정 서비스, 계약 서비스, 서명 서비스, 결제 서비스 등
로드밸런싱, 오토스케일링 초기 설정 및 관리 필요.
로그 관리 필요.
로드밸런싱, 오토스케일링 관리 쉽게 할 수 있는 것.
로그를 쉽게 볼 수 있도록 할 수 있는 것.
기타 관리를 편리 할 수 있게 하는 것
필요한 것
콘솔로 몇 분만에 원하는 AWS 구성을 쉽게 만들 수 있음.
오토스케일링, 로드밸런싱 쉽게 설정 및 자동 관리
애플리케이션 버저닝
웹서버, 시스템, 애플리케이션 서버 등의 로그를 쉽게 볼 수 있음
AWS CLI로 편하게 배포 가능
결국, 코드만 배포하면 이외의 것들은 편하게 설정 및 관리 가능
프론트엔드와 백엔드 사이 Gateway 필요
나누니 한 프로젝트에 공통으로 쓰였던 부분들이
모든 각 서비스에 중복적으로 들어가야하는 문제 발생.
각 서비스들이 핵심로직에만 신경 쓸 수 있도록 각 서비스 앞에서 모든 서비
스에서 필요로 하는 공통로직을 처리할 수 있는 Gateway 필요
여러 백엔드의 공통부분(유저인증, 액세스로그 등)을 처리 필요
0
백엔드 스택이 다양해도 일관된 인터페이스를 유지 필요 (JSON 형식, REST API)
모두싸인 API를 공개하기위해 요금지불 및 API 사용 제재 필요
필요한 것
AWS API Gateway를 사용하자
Authorizer를 사용하여 API에 대한 유저 인증 가능
프론트엔드와 백엔드 인터페이스를 맞춰 연결 가능
API-KEY로 요금지불 및 API 사용 제제 가능
배포단계 관리 가능
커스텀 도메인 지원
Swagger 지원
DDos 공격 완화
서비스간의 통신
계정서비스의 회원가입시
서명 서비스 - 샘플 서명,
계약 서비스 - 샘플 계약문서
결제 서비스 - 회원가입시 제공되는 무료 이용권 3건
서버간 통신은 메시지큐를 이용하자
최대한 서비스간 의존성을 줄이자
필요한 것
AWS SNS
AWS SQS
메세지 큐를 서버 만들어서 관리하면 번거로운
일이 많으니 AWS SNS와 SQS를 사용하자
SNS을 통해 서비스에서 일어난 일을 Publish하면
SNS를 Subscribe하는 각 서비스들의 SQS에서 받
아 필요한 일을 처리함
관리가 쉽고 AWS API, CLI 모두 제공
회원가입
SNS topic Publish
서명 서비스 Queue
계약 서비스 Queue
결제 서비스 Queue
로그관리
기존 모놀리식 프로젝트에서는 로그가 한 곳
각 서비스들의 나눠진 로그를 정리 필요
모든 로그를 한곳에서 볼 수 있도록
CS 또는 디버깅시 보고 싶은 로그 검색 필요
지표를 시각화하고 모니터링
필요한 것
Elasticsaerch에 로그를 모두 저장하고
Kibana를 이용해서 시각화해서 보자
AWS ElasticSearch Service를 사용하면
ElasticSearch와 Kibana를 쉽게 생성 적용가능
많이 사용하는 ELK(ElasticSearch Logstash Kibana) 스택의
Logstash를 사용하려 했으나,
관리형의 Elastic Beanstalk 환경이다 보니
자유도가 떨어져 Logstash를 설정하기가 어려움을 겪음.
로그를 어디로 모을지는 정해졌는데,
어떻게 보낼까?
AWS에서 권장하는
CloudWatch Logs를 써보자!
간단한 서비스는 람다
이메일 서비스 같이 크기가 작고 간단한 서비스에
Elastic Beanstalk 환경은 비용이 너무 아깝다
Worker로 쓰기 좋은 환경 없을까
AWS Lambda를 통해 비용을 절감하자
실행될 때만 가격 측정 => 비용절감
Amazon
S3
Amazon
SES
Amazon
Route 53
Availability Zone a
Availability Zone c
Amazon
CloudFront
Amazon
S3
Amazon
RDS
Amazon API Gat
eway
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS Elastic
Beanstalk
AWS
Lambda
프론트엔드
Amazon ES
Amazon
CloudWatch
로그 & 모니터링
파일서버
이메일서비스
Amazon
SNS
Amazon
SQS
Amazon
SQS
서비스간 메세지
마이크로서비스 도입시,
탈도 많고 힘들었지만 크게 만족
서비스 단위가 작아지니 변경에 대한 두려움 감소, 배포 속도 증가
장애시 해당 장애 서비스만 중단(다른 서비스 원할)
서비스에 맞게 기술 스택 자유롭게 사용
서비스에 맞는 컴퓨팅 파워 적용가능
전체적인 개발 만족도 향상
다시 평화가 찾아왔고,
반복된 날들을 보내고 있었는데
ECS 서울 리전 출시!
ECS 출시
Elastic beanstalk으로 서비스를 나누고
스테이지와 실서버를 둘다 가지고 있다보니
효율적으로 서버 배치를 하여도 가격 부담
같은 이유로 서비스 크기 단위를 더욱 작게 나누기도 부담
Elastic Beanstalk를 사용하면 언어 플랫폼의 버전이 제공하는 것을
사용하기 때문에 버전을 올려서 사용하고 싶어도 할 수 없음
예) Node.js v8
Beanstalk이 완전 관리형이다 보니 기술스택에 대한 완전한 자유가 없음
마침, 새로운 서비스에서는 Docker를 활용하여 개발 중
안 갈 이유 없으니깐,
도커로 가자
한 인스턴스에 여러 컨테이너를 넣을 수 있으므로 비용 절감
ALB를 사용, 로드밸런서를 하나로 통합가능하여 비용 절감
ECS를 이용하여 쉽고 간단히 Docker 클러스터링 구현 가능
ECR로 Private Image Repository 가능
버저닝 가능
AWS CLI로 CI-CD서버만 잘만들면
크게 어렵지 않게 배포 자동화도 가능
당연히, 도커의 이점을 모두 가져올 수 있음
새롭게 개발하는 서비스들 적용 완료
기존 서비스들,
Elastic Beanstalk에서 ECS로 변경 중
기존 대비 40%
이상 비용 절감 (컴퓨팅)
Amazon
S3
Amazon
SES
Amazon
Route 53
Availability Zone a
Availability Zone c
Amazon
CloudFront
Amazon
S3
Amazon
RDS
Amazon API Gat
eway
AWS
Lambda
프론트엔드
Amazon ES
Amazon
CloudWatch
로그 & 모니터링
파일서버
이메일서비스
Amazon
SNS
Amazon
SQS
Amazon
SQS
서비스간 메세지
Amazon ECS Amazon ECS Amazon ECS
Amazon ECS Amazon ECS Amazon ECS
Application Load
Balancer
AWS의 지원
AWS Summit, 오피스 아워, 컨설팅 지원 등
감사합니다
정승현
imaster0209@lawoafactory.com

More Related Content

PDF
AWS X-Rayによるアプリケーションの分析とデバッグ
PDF
VPC Reachability Analyzer 使って人生が変わった話
PDF
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
PDF
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
PDF
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
PDF
AWS Black Belt Online Seminar AWS上のJenkins活用方法
PDF
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
PDF
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation
AWS X-Rayによるアプリケーションの分析とデバッグ
VPC Reachability Analyzer 使って人生が変わった話
S05 Microsoft Azure 仮想マシンでの Active Directory 活用シナリオ
AWS Fargate와 Amazon ECS를 사용한 CI/CD 베스트 프랙티스 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Build...
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
AWS Black Belt Online Seminar AWS上のJenkins活用方法
MSA 전략 2: 마이크로서비스, 어떻게 구현할 것인가?
AWS Black Belt Tech シリーズ 2015 - AWS CloudFormation

What's hot (20)

PDF
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
PDF
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
PDF
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
PPTX
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
PDF
AWS Black Belt Online Seminar 2017 AWS WAF
PDF
Azure ADとIdentity管理
PPTX
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
PDF
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...
PPTX
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
PPTX
ぼくがAthenaで死ぬまで
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
PDF
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
PPTX
Azure App Service
PDF
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
PDF
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
PDF
Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)
PDF
EKS Workshop
PDF
AWSのセキュリティについて
AWS Fargate와 Amazon ECS를 활용한 CI/CD 모범사례 - 유재석, AWS 솔루션즈 아키텍트 :: AWS Game Mast...
20211203 AWS Black Belt Online Seminar AWS re:Invent 2021アップデート速報
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
카카오 광고 플랫폼 MSA 적용 사례 및 API Gateway와 인증 구현에 대한 소개
KeycloakでFAPIに対応した高セキュリティなAPIを公開する
AWS Black Belt Online Seminar 2017 AWS WAF
Azure ADとIdentity管理
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
대규모 온프레미스 하둡 마이그레이션을 위한 실행 전략과 최적화 방안 소개-유철민, AWS Data Architect / 박성열,AWS Pr...
Azure ad の導入を検討している方へ ~ active directory の構成パターンと正しい認証方式の選択~
ぼくがAthenaで死ぬまで
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
AWS Batch를 통한 손쉬운 일괄 처리 작업 관리하기 - 윤석찬 (AWS 테크에반젤리스트)
Azure App Service
마이크로서비스 기반 클라우드 아키텍처 구성 모범 사례 - 윤석찬 (AWS 테크에반젤리스트)
AWS Black Belt Tech シリーズ 2016 - Amazon SQS / Amazon SNS
Office365勉強会 #23 Azure AD のテナント設計(Office365管理者向け)
EKS Workshop
AWSのセキュリティについて
Ad

Similar to 모두싸인의 AWS 성장기 (20)

PDF
AWS re:Invent 특집 온라인 세미나 - 주요 신규 출시 서비스 알아보기 (윤석찬, AWS테크에반젤리스트)
PDF
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
PDF
[ASomeCloud] AWS 서비스소개
PDF
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
PDF
AWS 클라우드의 다양한 업무 활용 사례 (정민정) - AWS 웨비나 시리즈 2015
PDF
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
PPTX
Serverless Architecture - 김현민
PDF
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
PPTX
aws 설명 및 기본 환경 설정
PDF
[AWS Builders] AWS와 함께하는 클라우드 컴퓨팅
PDF
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
PDF
하이브리드 구성을 위한 AWS서비스 알아보기 ::김용우 :: AWS Summit Seoul 2016
PDF
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
PDF
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
PDF
여러분의 워크로드에 적합한 AWS 데이터베이스로 손쉽게 마이그레이션하기 - 최유정 (AWS 솔루션즈 아키텍트)
PDF
AWS 클라우드 서비스 소개 및 사례 (방희란) - AWS 101 세미나
PDF
AWS Certified Cloud Practitioner
PDF
서버리스 아키텍처 패턴 및 로그 처리를 위한 파이프라인 구축기 - 황윤상 솔루션즈 아키텍트, AWS / Matthew Han, SendBi...
PDF
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
PPTX
Aws lambda 와 함께 서버리스 서비스 만들기
AWS re:Invent 특집 온라인 세미나 - 주요 신규 출시 서비스 알아보기 (윤석찬, AWS테크에반젤리스트)
찾아가는 AWS 세미나(구로,가산,판교) - AWS에서 작은 서비스 구현하기 (김필중 솔루션즈 아키텍트)
[ASomeCloud] AWS 서비스소개
AWS Lambda와 API Gateway를 통한 Serverless Architecture 특집 (윤석찬)
AWS 클라우드의 다양한 업무 활용 사례 (정민정) - AWS 웨비나 시리즈 2015
AWS 상에서 Microsoft 워크로드 구축 및 운영 - AWS Summit Seoul 2017
Serverless Architecture - 김현민
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
aws 설명 및 기본 환경 설정
[AWS Builders] AWS와 함께하는 클라우드 컴퓨팅
AWS와 함께하는 클라우드 컴퓨팅 - 강철, AWS 어카운트 매니저 :: AWS Builders 100
하이브리드 구성을 위한 AWS서비스 알아보기 ::김용우 :: AWS Summit Seoul 2016
[애플리케이션 현대화 및 개발] 파트너 세션 | 모던 인프라스트럭쳐 아키텍쳐 - 서호석 이사, 영우디지탈
천만 사용자를 위한 AWS 클라우드 아키텍쳐 진화하기- AWS Summit Seoul 2017
여러분의 워크로드에 적합한 AWS 데이터베이스로 손쉽게 마이그레이션하기 - 최유정 (AWS 솔루션즈 아키텍트)
AWS 클라우드 서비스 소개 및 사례 (방희란) - AWS 101 세미나
AWS Certified Cloud Practitioner
서버리스 아키텍처 패턴 및 로그 처리를 위한 파이프라인 구축기 - 황윤상 솔루션즈 아키텍트, AWS / Matthew Han, SendBi...
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
Aws lambda 와 함께 서버리스 서비스 만들기
Ad

More from Amazon Web Services Korea (20)

PDF
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
PDF
[D3T1S06] Neptune Analytics with Vector Similarity Search
PDF
[D3T1S03] Amazon DynamoDB design puzzlers
PDF
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
PDF
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
PDF
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
PDF
[D3T1S02] Aurora Limitless Database Introduction
PDF
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
PDF
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 2
PDF
AWS Modern Infra with Storage Roadshow 2023 - Day 1
PDF
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
PDF
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
PDF
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
PDF
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
PDF
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
PDF
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
PDF
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
PDF
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
PDF
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...
[D3T1S01] Gen AI를 위한 Amazon Aurora 활용 사례 방법
[D3T1S06] Neptune Analytics with Vector Similarity Search
[D3T1S03] Amazon DynamoDB design puzzlers
[D3T1S04] Aurora PostgreSQL performance monitoring and troubleshooting by use...
[D3T1S07] AWS S3 - 클라우드 환경에서 데이터베이스 보호하기
[D3T1S05] Aurora 혼합 구성 아키텍처를 사용하여 예상치 못한 트래픽 급증 대응하기
[D3T1S02] Aurora Limitless Database Introduction
[D3T2S01] Amazon Aurora MySQL 메이저 버전 업그레이드 및 Amazon B/G Deployments 실습
[D3T2S03] Data&AI Roadshow 2024 - Amazon DocumentDB 실습
AWS Modern Infra with Storage Roadshow 2023 - Day 2
AWS Modern Infra with Storage Roadshow 2023 - Day 1
사례로 알아보는 Database Migration Service : 데이터베이스 및 데이터 이관, 통합, 분리, 분석의 도구 - 발표자: ...
Amazon DocumentDB - Architecture 및 Best Practice (Level 200) - 발표자: 장동훈, Sr. ...
Amazon Elasticache - Fully managed, Redis & Memcached Compatible Service (Lev...
Internal Architecture of Amazon Aurora (Level 400) - 발표자: 정달영, APAC RDS Speci...
[Keynote] 슬기로운 AWS 데이터베이스 선택하기 - 발표자: 강민석, Korea Database SA Manager, WWSO, A...
Demystify Streaming on AWS - 발표자: 이종혁, Sr Analytics Specialist, WWSO, AWS :::...
Amazon EMR - Enhancements on Cost/Performance, Serverless - 발표자: 김기영, Sr Anal...
Amazon OpenSearch - Use Cases, Security/Observability, Serverless and Enhance...
Enabling Agility with Data Governance - 발표자: 김성연, Analytics Specialist, WWSO,...

모두싸인의 AWS 성장기

  • 1. 모두싸인 AWS 사용기 CTO 정승현 간편 전자 계약 서비스 모두싸인 CTO 정승현 모두싸인 X AWS 성장기
  • 6. MVP 버전 개발 시작 필요한 것 프로젝트를 24시간 가동할 서버 데이터를 저장할 MySQL 기반 데이터베이스 서버 계약서, 서명 등을 저장할 파일 서버 외부에서 접근 할 수 없는 폐쇠된 네트워크
  • 7. 프로젝트를 24시간 가동할 서버 데이터를 저장할 MySQL 기반 DB 서버 계약서, 서명 파일 서버 서비스에 맞는 가상 네트워크 구성할 수 있는 VPC
  • 9. 이메일 서비스 개발된 서비스에서 쉽게 추가 가격을 저렴하게 Transactional한 이메일만 지원해도 된다 DKIM, SPF, DMARC 지원 (계약 서비스다 보니) 개발을 하다보니 이메일을 보내야 되는 기능이 생김 필요한 것
  • 10. AWS 환경에 익숙함(개발 편의성) 건당 가격이 다른 서드파티 서비스 보다 저렴 DKIM, SPF, DMARC 지원 요구 사항에 적합하여 AWS SES 선택
  • 12. 세션 데이터 세션 데이터를 저장할 인메모리 데이터베이스 서버 세션 정보 가져오는 것을 실제 서비스 데이터베이스에 영향을 주지않고 기존 데이터베이스보다 빠르게 처리 할 수 있는 데이터베이스를 이용하자 필요한 것
  • 13. 인메모리 데이터베이스는 Redis로 결정 Redis 지원하는 ElasticCache로 서버 관리를 쉽게 클러스터링 지원
  • 15. 서비스 배포 자체 도메인 HTTPS 엔드포인트 Blue-Green 배포 플로우 Single Point Of Failure 완화 로드밸런싱 드디어 MVP 버전 서비스 배포 필요한 것
  • 16. 쉬운 인터페이스 다른 AWS 서비스와 연동하기 쉬움 로드밸런싱 HTTPS 엔드포인트 지원 블루그린 배포 플로우 가능 Multi-AZ 지원
  • 17. Amazon S3 Amazon EC2 Amazon SES Amazon Route 53 Amazon EC2 Availability Zone a Availability Zone c Load Balancer Amazon RDS Amazon ElastiCache
  • 18. 요동치는 트래픽 트래픽이 높아 질 때 충분한 서버 배치 트래픽이 작을 때는 비용을 줄이기 위해 최소한의 서버만 배치 서비스 특성상 업무시간(약 8시 ~ 19시)에 트래픽이 많고 이후 시간 또는 주말에는 트래픽이 작다 이메일 마케팅 또는 프로모션시 트래픽 급증 대비 필요 필요한 것
  • 19. EC2 AutoScaling을 사용하여 트래픽에 따라 유동적으로 서버를 배치할 수 있도록 하자
  • 20. Amazon S3 Amazon EC2 Amazon SES Amazon Route 53 Amazon EC2 Availability Zone a Availability Zone c Load Balancer Auto Scaling group Auto Scaling group Amazon RDS Amazon ElastiCache
  • 21. 프론트엔드와 백엔드 분리 프론트를 배포할 웹서버 필요(정적 파일 배포) HTTPS 지원 필요 웹 프론트 빌드 후 CLI로 간단히 배포 가능 기존에는 개발팀에서 서비스의 모든 개발을 공유하다가 프론트엔드팀과 백엔드팀으로 나뉘게 됨 웹 뿐만 아니라 이후 앱을 위해 필요한 것
  • 22. S3를 통한 hosting와 CloudFront의 조합으로 쉽게 배포 가능 HTTPS 지원 Route53를 연동하여 도메인 쉽게 설정 HTTP에서 HTTPS Redirection 지원 AWS-CLI로 간단히 배포 가능 덤으로 전세계 엣지에서 낮은 지연 가능
  • 23. Amazon S3 Amazon EC2 Amazon SES Amazon Route 53 Amazon EC2 Availability Zone a Availability Zone c Load Balancer Auto Scaling group Auto Scaling group Amazon Clou dFront Amazon S3 Amazon RDS Amazon ElastiCache
  • 24. 이렇게 평온한 날들을 보내던 도중 서버팀 제안
  • 26. 그래, 우리 해봅시다 근대 마이크로서비스라고 들어도 봤고, 좋은거 같던데 그게 정확히 뭐죠?
  • 27. 현재(모놀리식)의 문제점 프로젝트가 하나에 모여있기 때문에 프로젝트가 커짐에 따라 한번 변경할 때, 변경사항이 기존 코드에 영향을 미쳐서 버그가 생겨날 것 같은 걱정. 기술 스택을 변경하고 싶은데 작은 변경이라도 프로젝트 전체 변경 필요. 장애시 모든 서비스 중단. 한 프로젝트안에 CPU를 많이 사용하는 부분, 메모리를 많이 사용하는 부분 등 무조건 최대치로 필요. 배포 규모가 커지고 부담이 크다. 팀원이 늘어남에 따라 프로젝트에 대한 복잡도가 더욱 커짐.
  • 28. 기존 모놀리식한 프로젝트를 각 서비스별로 나누어 기존 문제들을 해결하자 (시간상 마이크로서비스의 장점 생략)
  • 30. 나누었을 때, 각각 서비스들의 관리 서비스들을 나누니 나눈만큼 관리해야 된다. 예) 계정 서비스, 계약 서비스, 서명 서비스, 결제 서비스 등 로드밸런싱, 오토스케일링 초기 설정 및 관리 필요. 로그 관리 필요. 로드밸런싱, 오토스케일링 관리 쉽게 할 수 있는 것. 로그를 쉽게 볼 수 있도록 할 수 있는 것. 기타 관리를 편리 할 수 있게 하는 것 필요한 것
  • 31. 콘솔로 몇 분만에 원하는 AWS 구성을 쉽게 만들 수 있음. 오토스케일링, 로드밸런싱 쉽게 설정 및 자동 관리 애플리케이션 버저닝 웹서버, 시스템, 애플리케이션 서버 등의 로그를 쉽게 볼 수 있음 AWS CLI로 편하게 배포 가능 결국, 코드만 배포하면 이외의 것들은 편하게 설정 및 관리 가능
  • 32. 프론트엔드와 백엔드 사이 Gateway 필요 나누니 한 프로젝트에 공통으로 쓰였던 부분들이 모든 각 서비스에 중복적으로 들어가야하는 문제 발생. 각 서비스들이 핵심로직에만 신경 쓸 수 있도록 각 서비스 앞에서 모든 서비 스에서 필요로 하는 공통로직을 처리할 수 있는 Gateway 필요 여러 백엔드의 공통부분(유저인증, 액세스로그 등)을 처리 필요 0 백엔드 스택이 다양해도 일관된 인터페이스를 유지 필요 (JSON 형식, REST API) 모두싸인 API를 공개하기위해 요금지불 및 API 사용 제재 필요 필요한 것
  • 33. AWS API Gateway를 사용하자 Authorizer를 사용하여 API에 대한 유저 인증 가능 프론트엔드와 백엔드 인터페이스를 맞춰 연결 가능 API-KEY로 요금지불 및 API 사용 제제 가능 배포단계 관리 가능 커스텀 도메인 지원 Swagger 지원 DDos 공격 완화
  • 34. 서비스간의 통신 계정서비스의 회원가입시 서명 서비스 - 샘플 서명, 계약 서비스 - 샘플 계약문서 결제 서비스 - 회원가입시 제공되는 무료 이용권 3건 서버간 통신은 메시지큐를 이용하자 최대한 서비스간 의존성을 줄이자 필요한 것
  • 35. AWS SNS AWS SQS 메세지 큐를 서버 만들어서 관리하면 번거로운 일이 많으니 AWS SNS와 SQS를 사용하자 SNS을 통해 서비스에서 일어난 일을 Publish하면 SNS를 Subscribe하는 각 서비스들의 SQS에서 받 아 필요한 일을 처리함 관리가 쉽고 AWS API, CLI 모두 제공
  • 36. 회원가입 SNS topic Publish 서명 서비스 Queue 계약 서비스 Queue 결제 서비스 Queue
  • 37. 로그관리 기존 모놀리식 프로젝트에서는 로그가 한 곳 각 서비스들의 나눠진 로그를 정리 필요 모든 로그를 한곳에서 볼 수 있도록 CS 또는 디버깅시 보고 싶은 로그 검색 필요 지표를 시각화하고 모니터링 필요한 것
  • 38. Elasticsaerch에 로그를 모두 저장하고 Kibana를 이용해서 시각화해서 보자 AWS ElasticSearch Service를 사용하면 ElasticSearch와 Kibana를 쉽게 생성 적용가능
  • 39. 많이 사용하는 ELK(ElasticSearch Logstash Kibana) 스택의 Logstash를 사용하려 했으나, 관리형의 Elastic Beanstalk 환경이다 보니 자유도가 떨어져 Logstash를 설정하기가 어려움을 겪음. 로그를 어디로 모을지는 정해졌는데, 어떻게 보낼까?
  • 41. 간단한 서비스는 람다 이메일 서비스 같이 크기가 작고 간단한 서비스에 Elastic Beanstalk 환경은 비용이 너무 아깝다 Worker로 쓰기 좋은 환경 없을까 AWS Lambda를 통해 비용을 절감하자 실행될 때만 가격 측정 => 비용절감
  • 42. Amazon S3 Amazon SES Amazon Route 53 Availability Zone a Availability Zone c Amazon CloudFront Amazon S3 Amazon RDS Amazon API Gat eway AWS Elastic Beanstalk AWS Elastic Beanstalk AWS Elastic Beanstalk AWS Elastic Beanstalk AWS Elastic Beanstalk AWS Elastic Beanstalk AWS Lambda 프론트엔드 Amazon ES Amazon CloudWatch 로그 & 모니터링 파일서버 이메일서비스 Amazon SNS Amazon SQS Amazon SQS 서비스간 메세지
  • 43. 마이크로서비스 도입시, 탈도 많고 힘들었지만 크게 만족 서비스 단위가 작아지니 변경에 대한 두려움 감소, 배포 속도 증가 장애시 해당 장애 서비스만 중단(다른 서비스 원할) 서비스에 맞게 기술 스택 자유롭게 사용 서비스에 맞는 컴퓨팅 파워 적용가능 전체적인 개발 만족도 향상
  • 44. 다시 평화가 찾아왔고, 반복된 날들을 보내고 있었는데
  • 45. ECS 서울 리전 출시!
  • 46. ECS 출시 Elastic beanstalk으로 서비스를 나누고 스테이지와 실서버를 둘다 가지고 있다보니 효율적으로 서버 배치를 하여도 가격 부담 같은 이유로 서비스 크기 단위를 더욱 작게 나누기도 부담 Elastic Beanstalk를 사용하면 언어 플랫폼의 버전이 제공하는 것을 사용하기 때문에 버전을 올려서 사용하고 싶어도 할 수 없음 예) Node.js v8 Beanstalk이 완전 관리형이다 보니 기술스택에 대한 완전한 자유가 없음 마침, 새로운 서비스에서는 Docker를 활용하여 개발 중
  • 47. 안 갈 이유 없으니깐, 도커로 가자
  • 48. 한 인스턴스에 여러 컨테이너를 넣을 수 있으므로 비용 절감 ALB를 사용, 로드밸런서를 하나로 통합가능하여 비용 절감 ECS를 이용하여 쉽고 간단히 Docker 클러스터링 구현 가능 ECR로 Private Image Repository 가능 버저닝 가능 AWS CLI로 CI-CD서버만 잘만들면 크게 어렵지 않게 배포 자동화도 가능 당연히, 도커의 이점을 모두 가져올 수 있음
  • 49. 새롭게 개발하는 서비스들 적용 완료 기존 서비스들, Elastic Beanstalk에서 ECS로 변경 중 기존 대비 40% 이상 비용 절감 (컴퓨팅)
  • 50. Amazon S3 Amazon SES Amazon Route 53 Availability Zone a Availability Zone c Amazon CloudFront Amazon S3 Amazon RDS Amazon API Gat eway AWS Lambda 프론트엔드 Amazon ES Amazon CloudWatch 로그 & 모니터링 파일서버 이메일서비스 Amazon SNS Amazon SQS Amazon SQS 서비스간 메세지 Amazon ECS Amazon ECS Amazon ECS Amazon ECS Amazon ECS Amazon ECS Application Load Balancer
  • 51. AWS의 지원 AWS Summit, 오피스 아워, 컨설팅 지원 등