2. 부탁 말씀을 드립니다.^^
문서내에는 초보자도 쉽게 공감 할 수 있게 간단한 의미의 용
어를 사용하였습니다.
하루하루를 IT라는 정글속에서 전쟁을 치르며 살아간다는 느
낌으로 RollingStones의 Paint it black 들으며 보시는 것을
추천드립니다.
https://youtu.be/InRDF_0lfHk
3. 이 이야기는
고객 니즈(Needs) 변화에 대해
쉽고 빠르게 확인하고 스폰서십을 확보하여
다시 지속적인 개발을 해야하는 환경에서의
임무수행에 대한 고민에서 시작됩니다.
그럼 시작해 볼까요~!
4. 우리가 부여받은 대부분의 IT임무는
입력값을 받아서 이를 처리하고
결과값을 제시하는 것입니다.
쉽게 말해서 함수[f(x)]를 만드는 것입니다.
5. 함수를 만들었다고 끝나는 것은 아닙니다.
이 함수를 실행할 수 있는 환경이 필요한데 이를 시스템
[System]이라 얘기해 봅니다.
6. 웹페이지의 주소를 입력받아 가공하고
이를 이미지 파일들로 변환하는
임무를 가정해보겠습니다.
대용량 분산처리를 위한 스케일아웃(Scale out)이 가능한 시
스템 구성은 필수입니다.
7. 이와 관련 하여 함수를 작성하고 이를 실행하기 위한 시스템
을 구성하면 이번 IT임무는 완료할 수 있습니다.
자~ 그럼 저희는 어떻게 해서 이번 IT임무를 완료하려고 하는
지 시스템 구성에 대한 얘기부터 해 보겠습니다.
8. 시스템 구성은
전통적인 방식과 클라우드 방식으로
선택 할 수 있습니다.
먼저 다음장 내용에 대한
공감을 부탁드립니다.^^
9. 집 = 집터 + 구조물
시스템 = 인프라 영역 + 애플리케이션 영역
집을 지을 때는 집터에 구조물을 올리듯이
시스템을 구성하려면 인프라 영역과 애플리케이션 영역이 필
요합니다.
10. 인프라 영역 = 서버 + 네트워크 + 방화벽...
애플리케이션 영역 = 애플리케이션 플랫폼
+ 비지니스 로직...
다시 인프라 영역을 구성하는데는 서버, 네트워크, 방화벽 등
이 필요하고 애플리케이션 영역을 구성하는데는 애플리케이
션 플랫폼과 비지니스 로직 등이 필요합니다.
12. 앞 단에 메세지 큐를 두어 입력 요청을 관리하고 노드
(Node.js)기반으로 웹페이지를 가공하여 이미지 파일들을 생
성하고 이를 CDN Origin서버와 DB에 저장하는 구성을 하였
습니다.
노드 서버를 추가하여 스케일아웃을 할 수는 있지만 인프라
리소스의 정적인 관리 한계를 극복해야 해야 합니다.
corporate data center
CDN
Origin
DB
Node.js
Servers
RabbitMQ
서버
네트워크
방화벽
애플리케이션 플랫폼
비지니스 로직
13. 그리고 서버, 네트워크, 방화벽, 애플리케이션 플랫폼, 비지
니스 로직 등 5가지 항목을 준비해야 합니다.
인프라 영역의 리소스가 부족할 때는 신규 요청으로 확보하
는 내부 프로세스도 진행해야 되어 시간이 더 필요할 수도 있
습니다.
15. Amazon
DynamoDB
Node.js
Instances
AWS cloud
Amazon S3
bucket
Auto
Scaling
RabbitMQ
EC2로 메세지큐와 노드 서버 인스턴스를 추가하고 RabbitMQ
와 Node.js를 설치합니다.
기존의 CDN Origin 서버는 S3 버킷으로 DB 서버는
DynamoDB로 대체하였습니다.
클라우드 환경에서는 스케일아웃이 기본입니다.
서버
네트워크
방화벽
애플리케이션 플랫폼
비지니스 로직
16. 전통적인 방식이 5가지 항목을 준비해야 한다면 클라우드 방
식은 AWS로 인프라 영역에 대한 설정이 가능하기 때문에 애
플리케이션 플랫폼, 비지니스 로직 등 2가지 항목을 보다 짧
은 시간에 준비 할 수 있습니다.
여기까지가 클라우드를 사용하는 일반적인 이야기 입니다.
17. 저희는 더 짧은 시간에 준비할 수 있는 방법에 대해서도 접근
하였습니다.
그것은 바로 AWS 람다(Lambda) 함수를 사용하는 것입니다
19. AWS cloud
AWS
Lambda
Amazon
DynamoDB
Amazon S3
bucket
람다함수는 Java, Node.js, Python 플랫폼을 지원하며 요청-
응답으로 호출할 수 있는 것은 APIGateway이고 나머지는
이벤트로 호출됩니다.
코드를 업데이트 할 때 서버를 내리지 않아도 됩니다.
Amazon
Kinesis
Amazon
SNS
Amazon
SES
Amazon
Cognito
Amazon
CloudWatch
AWS
CloudFormation
AWS
Config
Amazon API
Gateway PythonNode.jsJava
On-Demand
Invocation
Automatic
Invocation
Execution
Environment
21. AWS
Lambda
람다 함수는 앞서 얘기한 것과 같이 입력값을 받아 처리하고
출력값을 보여주는 상태비저장의 함수로 구현해야 합니다.
상태비저장이기 때문에 일회성으로 사용할 수 있고 람다 인
스턴스를 언제든지 폐기할 수 있습니다.
= ->
22. 전체 함수의 요청 수와 코드가 실행한 시간에 대해 요금이 부
과됩니다.
프리티어는 월 백만의 무료과 월별 400,000GB-초 컴퓨팅
시간이 포함됩니다.
FAQ : https://aws.amazon.com/ko/lambda/faqs/
매월 첫 요청1백만회까지 무료
23. 지금까지 얘기한 내용을 정리해보면 IT임무를 수행하기 위해
서는 함수와 시스템을 만들어야합니다.
그리고 람다를 사용하여 서버없이도 구성 할 수 있기에 이전
에 해 왔던 방식보다 쉽고 빠르게 고객에게 보여줄 수 있습니
다.
서버없이도 구성하였기에 NoOps라고 얘기할 수 있습니다.
하지만 모든 것을 NoOps로 할 수 있다고 얘기하고 싶지는
않습니다.
24. 저희의 운영전략은
1. 초기에는 람다를 활용하여 운영
2. 컨테이너 기반의 EC2 클라우드 방식으로 전환 할 수 있는
준비(클라우드 락인 제거)
3. 오픈스택을 사용하여 레거시 인프라 관리 효율이 높아지
면 하이브리드 방식으로 운영
하는 것입니다.
25. 중요한 것은 상황과 비용에 따라 선택적으로 운영을 한다는
전략입니다.
이를 위한 다수의 선택지를 준비하는 것이 목표입니다.