SlideShare ist ein Scribd-Unternehmen logo
1 von 35
서버리스 기반의
애플리케이션 개발
프로세스 구축과
서버리스 서비스
분산컴퓨팅 프로젝트
201614906 정종범
Serverless란 무엇인가?
https://www.slideshare.net/AmazonWebServices/introduction-to-aws-lambda-and-serverless-applications
AWS 서버리스 서비스
AWS Fargate
• 서버 프로비저닝 / 관리 없이 컨테이너 실행
• EC2 인스턴스 없이, Auto-scaling 지원
• On-Demand 과금 정책
• High-availability (다중 AZ 서비스)
• 지정된 ECR 이미지를 수행하도록 설정 가능
AWS 서버리스 서비스
• 서버 프로비저닝 / 관리 없이 코드 실행
• Auto-scaling 지원
• On-Demand 과금 정책
• High-availability 서비스 제공
• 자동 복구
AWS Lambda
개발 프로세스 동작 방식
• 애플리케이션 호스팅부터 사용자 클릭 데이터 수집까지 서버리스로 진행
• EC2의 사용은 개발을 위해 사용된 Cloud9 서비스 이외에는 없음
• 개발 종료 이후에는 EC2 사용 없이 서비스 지속 가능
• AWS 튜토리얼 “현대적 웹 애플리케이션 구축“ 을 따라 진행
프로세스
구축 단계
&
이용 서비스
S3 서비스를 이용하여 웹 Front-end 구성
• CloudFormation 템플릿을 통한 인프라 구성
• Fargate 서비스로 서비스 배포
• CodePipeline을 이용하여 CI/CD 구현
Back-end 구성
DynamoDB를 이용하여 Database 구성
API Gateway, Cognito를 이용한 사용자 인증 구성
Lambda와 Kinesis Firehose를 이용한 사용자 클릭 데이터 수집
1. 웹 Front-end 구성
• Cloud9 서비스를 이용하여, AWS-CLI를 통해 진행
• 단순히 S3의 정적 웹 호스팅 기능을 이용하여 F/E 구성
2.1. CloudFormation 인프라 구성
• CloudFormation 템플릿을 이용하여 인프라를 구성
• 위와 같이 1개의 VPC, 2개의 public, 2개의 private 서브넷으로 구성
2.2. AWS Fargate를 이용한 배포
• 로드밸런서를 이용한 AWS Fargate 서비스를 활성화
• S3 버킷에 담긴 페이지 주소를 수정하여 API 호출 값을 나타냄
2.2. AWS Fargate를 이용한 배포
Fargate Cluster 생성화면
2.3. AWS CodePipeline를 이용한 CI/CD
• CodePipeline를 이용하여 CI/CD 파이프라인을 생성
• CodeCommit에 push를 수행하면 자동으로 build-deploy 수행
2.3. AWS CodePipeline를 이용한 CI/CD
CI/CD를 통해 자동 빌드 중인 상황
2.3. AWS CodePipeline를 이용한 CI/CD
CI/CD를 통해 자동 배포 중인 상황
3. DynamoDB를 이용한 DB 구성
• Fargate와 DynamoDB를 연결하여, 구성
• S3 버킷의 파일을 수정하여 DB 데이터를 접근하도록 설정
DynamoDB 구성화면
3. DynamoDB를 이용한 DB 구성
4. 사용자 인증 구성
• API Gateway를 이용하여 AWS Cognito 인증을 수행
4. 사용자 인증 구성
AWS Cognito 사용자 풀 설정 화면
5. 사용자 클릭 데이터 수집
• AWS Firehose, Lambda를 이용하여 클릭 이벤트를 버킷으로 전송
5. 사용자 클릭 데이터 수집
Firehose를 통해 생성된 S3 버킷 객체, Lambda 함수 모습
프로젝트 진행 결과물
http://my-first-modern-app.s3-website-us-east-1.amazonaws.com/
S3 DNS 주소로 접근 가능
진행 중 발생한 문제(1)
Fargate의 파일을 변경하기 위해 커밋하였는데, Code build 실패 발생
단계 세부정보에도 docker build가 실패하였다는 정보만 출력
진행 중 발생한 문제(1) 해결
- 빌드 로그를 통해, python-pip 패키지 설치가 안되고 있는 상황 확인
- 구글링을 통해 해결 방법 확인 (참고 링크) => 빌드 오류 해결
진행 중 발생한 문제(2)
문제(1) 해결 직후, 발생한 문제
- API 호출 시(ApiEndPoint) 접근이 되지 않고, ‘Permission denied’ 문제 발생
- 사용한 스택의 콘솔로 접속한 결과, ELB 타겟 그룹에 문제 확인
진행 중 발생한 문제(2)
확인 결과,
타겟 그룹에 존재하는 Fargate 프로세스의 Status가 생성 이후 즉시
draining 또는 unhealthy 상태로 변하는 문제 확인
프로젝트 진행 중 발생한 문제(2) 해결
- Fargate의 상태 확인을 위해 Codecommit 상태 확인
- 코드 커밋 시 누락된 파일 추가 후 다시 푸시 => 문제 해결
AWS Lambda vs. AWS Fargate
• 공통점
• 두 서비스 모두 서버리스 컴퓨팅을 구현하는 서비스
• Auto-scaling을 지원
• On-Demand 요금 정책 사용
• 차이점
• 람다는 코드 중심, Fargate는 컨테이너 중심의 서비스
• 비용모델의 차이
• 그래서, 어떤 것이 합리적일까?
AWS Lambda vs. AWS Fargate
• 개발 관점
• Fargate
• 기존 개발 방식에서 자주 이용하는 docker container 기반 서비스
• 익숙한 방식을 사용하여 개발자들의 접근이 용이
• Lambda
• 새로운 개발과정을 도입하거나 익혀야 한다는 점에서 리스크 존재
• 규모가 큰 서비스(업체)의 경우 적용이 힘들다는 약점
• 다만, 신속하게 서비스를 개발할 필요가 있는 경우 우세
AWS Lambda vs. AWS Fargate
• 비용 관점
• Fargate
• 시간당 CPU와 메모리 사용량을 기반으로 과금
• Lambda
• 처리 요청수, 처리 소요시간, 메모리 사용량을 종합하여 과금
AWS Lambda vs. AWS Fargate
• 하지만 남은 중요한 이슈!
• Lambda는 예열되지 않은(최근 실행된 적 없는) 상태에서 함수
호출 시 Cold Start가 발생
• 지속적으로 함수를 호출하여, 문제를 해결 가능 하지만 추가비
용 발생
• 이러한 점을 고려하여, 자신의 서비스 특성에 맞는 서비스 선택!
https://medium.com/harrythegreat/aws-lambda를-시작하기-전-알았으면-좋았을것들-788bd3b3bdd2
그 이외에 사용한 AWS 서비스들
• AWS Cloud9
• EC2를 이용하여 가상의 개발환경과 웹 IDE를 제공
• 언제, 어디서나 동일한 개발환경을 가질 수 있음
• CodeCommit, CodeBuild, CodeDeploy, CodePipeline
• CI/CD를 위한 AWS CodeServices
• CodeCommit : 프라이빗 Git repo를 제공
• CodeBuild : 코드 빌드 및 테스트
• CodeDeploy : 코드 배포 자동화
• CodePipeline : CD를 위한 코드 파이프라인 제공
그 이외에 사용한 AWS 서비스들
• AWS DynamoDB
• 완전관리형 NoSQL 데이터베이스
• 뛰어난 확장성, 높은 성능
• Elastic Load Balancer
• 해당 프로젝트에서는 NLB(Network Load Balancer)를 사용
• 대상 그룹(타겟 그룹)으로 트래픽 부하를 분산
• Health check 등을 통해 서비스 가용성 확보를 위해 사용
그 이외에 사용한 AWS 서비스들
• Amazon API Gateway
• 손쉽게 빠른 API를 만들 수 있는 서비스
• 프로비저닝이 필요 없다는 장점
• Amazon Cognito
• 사용자 풀, 자격 증명 풀 제공 서비스
• 앱 사용자의 로그인 기능 제공
• 앱에서 사용 시 ‘앱 클라이언트’를 발급받아 사용
그 이외에 사용한 AWS 서비스들
• Amazon Kinesis Data Firehose
• 지속적으로 데이터를 수집, 변환하여 스트리밍 데이터를 특
정 목적지에 전달
• 프로젝트에서는 로그인 사용자의 클릭 데이터를 스트림으
로 S3 버킷에 저장
• AWS CloudFormation
• 템플릿을 통해 AWS 서비스 상의 리소스를 생성, 관리
• AWS-CLI와 함께 사용할 경우 매우 강력한 기능
• 템플릿을 실행하여 언제 어디서나 동일한 Infrastructure를
제공받을 수 있음
프로젝트 진행하며 느낀 점
• 프로젝트는 튜토리얼에 안내되어 있음에도 서비스를 이용하여 그대로 구
성하는 것이 쉽지 않았다.
• AWS CLI와 CodeFormation을 통해 AWS 서비스를 이용해보았다. Git 사용
시 CLI와 CodeFormation을 이용하면, 다른 사람과의 협업에도 AWS를 효
율적으로 이용할 수 있음을 느꼈다.
• CI/CD툴을 이용해보며, 평소 진행하는 프로젝트(리트머스 등...)에도 이러
한 툴을 적용하여 편리하게 작업을 하면 좋겠다는 생각이 매우 들었다.
• 개인적으로 시간이 부족하여, 서비스들을 이용하여 나만의 프로젝트를 진
행하지 못한 점이 크게 아쉽다.
끝.
긴 슬라이드 확인하시느라 고생하셨습니다.

Weitere ähnliche Inhalte

Was ist angesagt?

HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다
Jongwon Han
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
Amazon Web Services Korea
 

Was ist angesagt? (20)

AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
AWS 서버리스 신규 서비스 총정리 - 트랙2, Community Day 2018 re:Invent 특집
 
Serverless Architecture - 김현민
Serverless Architecture - 김현민Serverless Architecture - 김현민
Serverless Architecture - 김현민
 
20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년20180124 스타트업부터 대기업까지 aws와 함께한 7년
20180124 스타트업부터 대기업까지 aws와 함께한 7년
 
HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다HB Smith에서는 AWS 이렇게 사용한다
HB Smith에서는 AWS 이렇게 사용한다
 
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
Gaming on AWS - 6. AWS 환경에서의 유연하고 신속한 코드 관리 및 배포
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
개발자를 위한 AWS re:Invent 신규 서비스 - 윤석찬 (AWS수석테크에반젤리스트) :: AWS Community Day 2020
 
AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법AWS Lambda를 이용한 CI/CD 기법
AWS Lambda를 이용한 CI/CD 기법
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020
스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020 스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020
스푼라디오 일본에서 한국으로 이전하기 - 최상기 (마이쿤) :: AWS Community Day 2020
 
20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다20170829 HB Smith에서는 AWS 이렇게 사용한다
20170829 HB Smith에서는 AWS 이렇게 사용한다
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
 
Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)
Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)
Kinesis / Lambda / EMR / Redshift 를 이용한 Big Data 분석 - 이상현 (빙글)
 
Atlassian Server RDS for MySQL 삽질기
Atlassian Server RDS for MySQL 삽질기Atlassian Server RDS for MySQL 삽질기
Atlassian Server RDS for MySQL 삽질기
 
Project TIMAT - infrastructure as code
Project TIMAT - infrastructure as codeProject TIMAT - infrastructure as code
Project TIMAT - infrastructure as code
 
ALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + LambdaALB+EC2 to API gateway + Lambda
ALB+EC2 to API gateway + Lambda
 
20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다20170718 hb smith에서는 aws 이렇게 사용한다
20170718 hb smith에서는 aws 이렇게 사용한다
 
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
Amazon EKS로 간단한 웹 애플리케이션 구축하기 - 김주영 (AWS) :: AWS Community Day Online 2021
 
AWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IPAWS Lambdas with a Static Outgoing IP
AWS Lambdas with a Static Outgoing IP
 
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 1회 - 비트코인 챗봇 만들기 가즈아ㅏㅏ
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 1회 - 비트코인 챗봇 만들기 가즈아ㅏㅏ[AUSG] 초보자를 위한 AWS 뿌시기 세미나 1회 - 비트코인 챗봇 만들기 가즈아ㅏㅏ
[AUSG] 초보자를 위한 AWS 뿌시기 세미나 1회 - 비트코인 챗봇 만들기 가즈아ㅏㅏ
 

Ähnlich wie Aws serverless services

AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
Amazon Web Services Korea
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
Amazon Web Services Korea
 
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
Amazon Web Services Korea
 
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
Amazon Web Services Korea
 

Ähnlich wie Aws serverless services (20)

AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
AWS CLOUD 2018- 보다 강력한 Serverless, AWS Lambda 기능 확장(안효빈 솔루션즈 아키텍트)
 
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
20190214 Startup의 한정된 자원(인력, 자금)에서 AWS를 효율적으로 사ᄋ...
 
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
AWS 12월 웨비나 │성공적인 마이그레이션을 위한 클라우드 아키텍처 및 운영 고도화
 
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
[2017 AWS Startup Day] 서버리스 마이크로서비스로 일당백 개발조직 만들기
 
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
효과적인 데브옵스를 위한 AWS 개발 도구 활용하기 - AWS Summit Seoul 2017
 
AWS Certified Cloud Practitioner
AWS Certified Cloud PractitionerAWS Certified Cloud Practitioner
AWS Certified Cloud Practitioner
 
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
비트교육센터-AWS활용 1주차: EC2, S3, Elastic Beanstalks 사용
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit S...
 
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
사례들로 알아보는 컨테이너, 언제 어떻게 쓰면 좋을까? – 김성수 AWS 솔루션즈 아키텍트, 허준 AWS 어카운트 매니저, 이창명 선데이토...
 
테크데이타 - MS workload migration to aws 웨비나 발표자료 20210713
테크데이타 - MS workload migration to aws 웨비나 발표자료 20210713테크데이타 - MS workload migration to aws 웨비나 발표자료 20210713
테크데이타 - MS workload migration to aws 웨비나 발표자료 20210713
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
 
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
AWS CLOUD 2017 - 클라우드 마이그레이션 어떻게 할 것인가? (이병윤 이사)
 
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
AWS re:Invent 특집(1) – 파이선(Python) 개발자를 위한 AWS 활용 방법 (윤석찬)
 
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS Lambda 100% 활용하기 :: 김상필 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
데브옵스(DevOps) 문화 모범 사례와 구현 도구 살펴보기 – 박선준 :: AWS Builders Online Series
 
스타트업 관점에서 본 AWS 선택과 집중 (한승호, 에멘탈) :: AWS DevDay 2018
스타트업 관점에서 본 AWS 선택과 집중 (한승호, 에멘탈) :: AWS DevDay 2018스타트업 관점에서 본 AWS 선택과 집중 (한승호, 에멘탈) :: AWS DevDay 2018
스타트업 관점에서 본 AWS 선택과 집중 (한승호, 에멘탈) :: AWS DevDay 2018
 
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016
 
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
내 주변 작업하기 좋은 카페 찾아주는 웹앱 "작업공간" - CI/CD
 
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
[Azure bootcamp2017] Azure App Service로 서비스 탄탄하게 관리하기
 

Kürzlich hochgeladen

Kürzlich hochgeladen (8)

JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 

Aws serverless services

  • 1. 서버리스 기반의 애플리케이션 개발 프로세스 구축과 서버리스 서비스 분산컴퓨팅 프로젝트 201614906 정종범
  • 3. AWS 서버리스 서비스 AWS Fargate • 서버 프로비저닝 / 관리 없이 컨테이너 실행 • EC2 인스턴스 없이, Auto-scaling 지원 • On-Demand 과금 정책 • High-availability (다중 AZ 서비스) • 지정된 ECR 이미지를 수행하도록 설정 가능
  • 4. AWS 서버리스 서비스 • 서버 프로비저닝 / 관리 없이 코드 실행 • Auto-scaling 지원 • On-Demand 과금 정책 • High-availability 서비스 제공 • 자동 복구 AWS Lambda
  • 5. 개발 프로세스 동작 방식 • 애플리케이션 호스팅부터 사용자 클릭 데이터 수집까지 서버리스로 진행 • EC2의 사용은 개발을 위해 사용된 Cloud9 서비스 이외에는 없음 • 개발 종료 이후에는 EC2 사용 없이 서비스 지속 가능 • AWS 튜토리얼 “현대적 웹 애플리케이션 구축“ 을 따라 진행
  • 6. 프로세스 구축 단계 & 이용 서비스 S3 서비스를 이용하여 웹 Front-end 구성 • CloudFormation 템플릿을 통한 인프라 구성 • Fargate 서비스로 서비스 배포 • CodePipeline을 이용하여 CI/CD 구현 Back-end 구성 DynamoDB를 이용하여 Database 구성 API Gateway, Cognito를 이용한 사용자 인증 구성 Lambda와 Kinesis Firehose를 이용한 사용자 클릭 데이터 수집
  • 7. 1. 웹 Front-end 구성 • Cloud9 서비스를 이용하여, AWS-CLI를 통해 진행 • 단순히 S3의 정적 웹 호스팅 기능을 이용하여 F/E 구성
  • 8. 2.1. CloudFormation 인프라 구성 • CloudFormation 템플릿을 이용하여 인프라를 구성 • 위와 같이 1개의 VPC, 2개의 public, 2개의 private 서브넷으로 구성
  • 9. 2.2. AWS Fargate를 이용한 배포 • 로드밸런서를 이용한 AWS Fargate 서비스를 활성화 • S3 버킷에 담긴 페이지 주소를 수정하여 API 호출 값을 나타냄
  • 10. 2.2. AWS Fargate를 이용한 배포 Fargate Cluster 생성화면
  • 11. 2.3. AWS CodePipeline를 이용한 CI/CD • CodePipeline를 이용하여 CI/CD 파이프라인을 생성 • CodeCommit에 push를 수행하면 자동으로 build-deploy 수행
  • 12. 2.3. AWS CodePipeline를 이용한 CI/CD CI/CD를 통해 자동 빌드 중인 상황
  • 13. 2.3. AWS CodePipeline를 이용한 CI/CD CI/CD를 통해 자동 배포 중인 상황
  • 14. 3. DynamoDB를 이용한 DB 구성 • Fargate와 DynamoDB를 연결하여, 구성 • S3 버킷의 파일을 수정하여 DB 데이터를 접근하도록 설정
  • 16. 4. 사용자 인증 구성 • API Gateway를 이용하여 AWS Cognito 인증을 수행
  • 17. 4. 사용자 인증 구성 AWS Cognito 사용자 풀 설정 화면
  • 18. 5. 사용자 클릭 데이터 수집 • AWS Firehose, Lambda를 이용하여 클릭 이벤트를 버킷으로 전송
  • 19. 5. 사용자 클릭 데이터 수집 Firehose를 통해 생성된 S3 버킷 객체, Lambda 함수 모습
  • 21. 진행 중 발생한 문제(1) Fargate의 파일을 변경하기 위해 커밋하였는데, Code build 실패 발생 단계 세부정보에도 docker build가 실패하였다는 정보만 출력
  • 22. 진행 중 발생한 문제(1) 해결 - 빌드 로그를 통해, python-pip 패키지 설치가 안되고 있는 상황 확인 - 구글링을 통해 해결 방법 확인 (참고 링크) => 빌드 오류 해결
  • 23. 진행 중 발생한 문제(2) 문제(1) 해결 직후, 발생한 문제 - API 호출 시(ApiEndPoint) 접근이 되지 않고, ‘Permission denied’ 문제 발생 - 사용한 스택의 콘솔로 접속한 결과, ELB 타겟 그룹에 문제 확인
  • 24. 진행 중 발생한 문제(2) 확인 결과, 타겟 그룹에 존재하는 Fargate 프로세스의 Status가 생성 이후 즉시 draining 또는 unhealthy 상태로 변하는 문제 확인
  • 25. 프로젝트 진행 중 발생한 문제(2) 해결 - Fargate의 상태 확인을 위해 Codecommit 상태 확인 - 코드 커밋 시 누락된 파일 추가 후 다시 푸시 => 문제 해결
  • 26. AWS Lambda vs. AWS Fargate • 공통점 • 두 서비스 모두 서버리스 컴퓨팅을 구현하는 서비스 • Auto-scaling을 지원 • On-Demand 요금 정책 사용 • 차이점 • 람다는 코드 중심, Fargate는 컨테이너 중심의 서비스 • 비용모델의 차이 • 그래서, 어떤 것이 합리적일까?
  • 27. AWS Lambda vs. AWS Fargate • 개발 관점 • Fargate • 기존 개발 방식에서 자주 이용하는 docker container 기반 서비스 • 익숙한 방식을 사용하여 개발자들의 접근이 용이 • Lambda • 새로운 개발과정을 도입하거나 익혀야 한다는 점에서 리스크 존재 • 규모가 큰 서비스(업체)의 경우 적용이 힘들다는 약점 • 다만, 신속하게 서비스를 개발할 필요가 있는 경우 우세
  • 28. AWS Lambda vs. AWS Fargate • 비용 관점 • Fargate • 시간당 CPU와 메모리 사용량을 기반으로 과금 • Lambda • 처리 요청수, 처리 소요시간, 메모리 사용량을 종합하여 과금
  • 29. AWS Lambda vs. AWS Fargate • 하지만 남은 중요한 이슈! • Lambda는 예열되지 않은(최근 실행된 적 없는) 상태에서 함수 호출 시 Cold Start가 발생 • 지속적으로 함수를 호출하여, 문제를 해결 가능 하지만 추가비 용 발생 • 이러한 점을 고려하여, 자신의 서비스 특성에 맞는 서비스 선택! https://medium.com/harrythegreat/aws-lambda를-시작하기-전-알았으면-좋았을것들-788bd3b3bdd2
  • 30. 그 이외에 사용한 AWS 서비스들 • AWS Cloud9 • EC2를 이용하여 가상의 개발환경과 웹 IDE를 제공 • 언제, 어디서나 동일한 개발환경을 가질 수 있음 • CodeCommit, CodeBuild, CodeDeploy, CodePipeline • CI/CD를 위한 AWS CodeServices • CodeCommit : 프라이빗 Git repo를 제공 • CodeBuild : 코드 빌드 및 테스트 • CodeDeploy : 코드 배포 자동화 • CodePipeline : CD를 위한 코드 파이프라인 제공
  • 31. 그 이외에 사용한 AWS 서비스들 • AWS DynamoDB • 완전관리형 NoSQL 데이터베이스 • 뛰어난 확장성, 높은 성능 • Elastic Load Balancer • 해당 프로젝트에서는 NLB(Network Load Balancer)를 사용 • 대상 그룹(타겟 그룹)으로 트래픽 부하를 분산 • Health check 등을 통해 서비스 가용성 확보를 위해 사용
  • 32. 그 이외에 사용한 AWS 서비스들 • Amazon API Gateway • 손쉽게 빠른 API를 만들 수 있는 서비스 • 프로비저닝이 필요 없다는 장점 • Amazon Cognito • 사용자 풀, 자격 증명 풀 제공 서비스 • 앱 사용자의 로그인 기능 제공 • 앱에서 사용 시 ‘앱 클라이언트’를 발급받아 사용
  • 33. 그 이외에 사용한 AWS 서비스들 • Amazon Kinesis Data Firehose • 지속적으로 데이터를 수집, 변환하여 스트리밍 데이터를 특 정 목적지에 전달 • 프로젝트에서는 로그인 사용자의 클릭 데이터를 스트림으 로 S3 버킷에 저장 • AWS CloudFormation • 템플릿을 통해 AWS 서비스 상의 리소스를 생성, 관리 • AWS-CLI와 함께 사용할 경우 매우 강력한 기능 • 템플릿을 실행하여 언제 어디서나 동일한 Infrastructure를 제공받을 수 있음
  • 34. 프로젝트 진행하며 느낀 점 • 프로젝트는 튜토리얼에 안내되어 있음에도 서비스를 이용하여 그대로 구 성하는 것이 쉽지 않았다. • AWS CLI와 CodeFormation을 통해 AWS 서비스를 이용해보았다. Git 사용 시 CLI와 CodeFormation을 이용하면, 다른 사람과의 협업에도 AWS를 효 율적으로 이용할 수 있음을 느꼈다. • CI/CD툴을 이용해보며, 평소 진행하는 프로젝트(리트머스 등...)에도 이러 한 툴을 적용하여 편리하게 작업을 하면 좋겠다는 생각이 매우 들었다. • 개인적으로 시간이 부족하여, 서비스들을 이용하여 나만의 프로젝트를 진 행하지 못한 점이 크게 아쉽다.

Hinweis der Redaktion

  1. 안녕하세요, 정종범입니다. “서버리스 기반의 웹 애플리케이션 개발~” 프로젝트에 대해 발표하도록 하겠습니다.
  2. 혹시 서버리스 컴퓨팅이라는 말, 들어보셨나요? 서버리스... 라면, 서버가 없다는 말일까요? 네 맞습니다. 서버가 없이 컴퓨팅 파워를 이용하는 것이죠. 가장 큰 장점으로는 슬라이드에 보이듯이 서버를 프로비저닝하거나 관리할 필요가 없다는 것이죠! 나머지 3가지는 AWS 서버리스 서비스를 이용했을때의 장점입니다. 그러면, 저희는 서버리스 서비스를 통해 구현한 저희 프로젝트에 대해 살펴보도록 하겠습니다. 바로 시나리오에 대해서 안내해 드릴텐데, 궁금하신 분들은 슬라이드에 각 서비스별 특징이 나와있으니깐, 확인해주세요!
  3. 앞서 말씀드렸듯이 제 프로젝트 주제는 서버리스 웹 애플리케이션 구축입니다. 단순히 서버리스 웹을 구현하는 것은 간단하기 때문에, AWS의 다양한 서비스들을 활용하여 현대적인 형태의 웹 애플리케이션을 구축하였습니다. 이를 통해 실제 AWS가 production 수준에서 어떻게 사용되는 지 직접 체험해보았습니다. 발표에 앞서 제 프로젝트는 AWS 튜토리얼을 따라 진행한 내용입니다. 튜토리얼에 대해 궁금하신 분들은 링크를 접속하시면 튜토리얼에 대한 정보를 확인해보실 수 있습니다.
  4. 먼저 프로세스 구축 단계입니다. 다음 슬라이드부터는 단계별로 어떻게 구축하였는지에 대해 말씀드리겠습니다.
  5. 먼저 웹 FE 구성입니다. Cloud9과 AWS CLI를 이용하여, S3 버킷을 생성하고, html 파일을 업로드하였습니다. 이후에 S3 정적 웹 호스팅 기능을 이용하여, 해당 웹을 정적으로 호스팅하였습니다.
  6. 여기서 부턴 2단계 BE 구성입니다. CloudFormation 서비스를 이용하여서 제공되는 템플릿을 통해 서비스의 인프라를 구성합니다.
  7. 이전단계에세 구성한 인프라 위에 ECS에 존재하는 Fargate를 이용하여, Python Flask앱을 배포합니다. 서로 다른 AZ에 존재하는 2개의 서비스를 구성하여 고가용성, 안정성을 유지합니다. 또한 이전 단계에 저장하였던 S3 버킷의 주소를 수정하여 해당 ECS에 접근할 수 있는 로드밸런서의 주소를 전달합니다.
  8. 지금까지 보면 FE에 비해 BE가 설정이 복잡하기 때문에 실제 개발 시에는 BE가 개발의 병목지점이 될 수 있습니다. 따라서 AWS Codepipeline을 이용해서 CI/CD를 구현해두면, 개발 병목 현상을 막고, 더욱 최신의 서비스를 빠르게 사용자들이 받을 수 있게 됩니다. 2.3 단계에서는 이러한 작업을 수행을 하였습니다.
  9. 그리고 이제 BE에 AWS DynamoDB를 이용하여, 데이터를 저장하고 읽는데 편리하게 서비스를 수정하였습니다.
  10. 그리고, API Gateway와 AWS Cognito를 통해 사용자 인증 서비스를 추가하였습니다.
  11. 마지막으로, 로그인 사용자의 클릭 데이터 스트림을 Kinetic Firehose를 통해 Lambda에서 처리한 후 S3 버킷에 스트림을 저장하였습니다.
  12. 위 링크로 접근하시면 실제 서비스를 체험하실 수 있습니다. (가입) (로그인) (입양) (로그아웃) (로그인) (입양 상태)
  13. AWS의 서비스 중 서버리스 컴퓨팅 서비스는 2가지가 있습니다. Lambda와 Fargate. 둘은 모두 오토 스케일링과 온디맨드형 과금 정책을 가지고 있는데요, 그렇다면 어떤 것을 쓰는 것이 좋을까요?
  14. 우선 개발의 관점에서 Fargate는 컨테이너 기반, 람다는 코드 기반이라는 중요한 차이점이 있습니다. Fargate가 가지고 있는 컨테이너 기반은 기존의 개발자들이 자주 사용하던 개발 방식입니다. 다만 어디에서 컨테이너를 실행시키느냐의 차이만 존재할 뿐, 굉장히 친숙한 개발 방식입니다. 반면 람다는 아직 개발자들에게 익숙한 개발 패러다임은 아닙니다. 때문에 만약 서비스를 람다를 이용해 개발하기로 했다면, 개발자들이 이에 익숙해지는데 시간이 필요할 수 있습니다. 다만, 신속하게 서비스를 진행해야한다거나, 간단한 API 같은 경우 Fargate에 비해 Lambda가 생산성 면에서 뛰어날 수 있습니다.
  15. 또한 비용을 생각하지 않을 수가 없죠. 다만 둘의 과금 정책은 비교 할 수 없습니다. 과금 모델이 다르기 때문이죠. Fargate는 생성 시 책정한 정책의 CPU와 메모리 사용량에 따라 과금을 하며, 람다는 코드 처리 요청수, 소요시간, 메모리 사용량을 종합하여 과금합니다. 이 부분은 AWS Pricing calculator를 이용하여 비교해보시면 어떤 서비스가 합리적인지 확인하실 수 있습니다.
  16. 그리고 마지막으로 람다의 경우 충분히 준비되지 않은 상태에서 호출하게 되면, 속도가 낮아지는 Cold start가 발생합니다. 빠른 응답이 중요하지 않은 경우, 문제가 되지 않을 수도 있지만, 때로는 심각한 문제가 되기도 합니다. 따라서 상황에 맞는 서비스를 선택하는 것이 좋겠습니다.
  17. 이외에도 프로젝트를 진행하며 이용했던 다양한 서비스들에 대한 간략한 설명입니다.
  18. 마지막으로, 프로젝트를 진행하며 느낀 점에 대해 말씀드리겠습니다. 발표에서는 간략하게 “어떠한 서비스를 어디에 추가하였다”라는 식으로 말씀을 드렸습니다. 각각의 서비스에 대한 이해가 없는 상태에서 튜토리얼을 따라만 하는 것은 의미가 없다고 생각하여, 각각의 서비스들이 어떠한 목적을 가지고 존재하는지 파악하고자 최대한 노력하였습니다. 서비스들을 이해하고 진행해보고자 하였음에도, AWS CLI 환경에서 진행하는 프로젝트 였기에 진행하는 것도 쉽지 않았습니다. 또한 AWS CLI와 CodeFormation을 사용하여 프로젝트를 진행해보았습니다. 이전부터 이러한 AWS 서비스들은 다른 사람들과 어떤 식으로 협업하여 유지할까라는 생각을 했었는데, 이번 경험을 토대로 AWS 서비스들을 협업에 이용할 수 있을 것 같습니다. 이번 프로젝트에 포함되었던 CI/CD툴을 이용해보니 굉장히 편리하다는 느낌을 받았습니다. 기존에 서비스에도 적용할 수 있는 기회가 되어 적용할 수 있으면 좋겠다는 생각을 했습니다. 마지막으로 개인적으로 시간이 부족하여, 이러한 다양한 서비스들을 저의 프로젝트에 적용시켜 진행하지 못했다는 아쉬운 점이 남습니다. 이제 이러한 서비스들을 익혔으니, 추후에 프로젝트를 진행하게된다면 AWS 서비스들을 적절히 선택하여 진행하도록 하겠습니다.
  19. 이상으로 발표를 마치겠습니다. 감사합니다.