이 글은 AWS Lambda로 시작하는 서버리스를 참고하여 작성하였습니다.
작성자 : 임예람
ch01 서버리스
1. 서버리스란?
📌서버가 없다는 의미이다.
👉🏻서버를 직접 구축하지 않고 서비스를 사용함으로써 구축 및 관리 비용을 낮추고, 서버 운영에 따라 발생하는 유지보수의 어려움을 줄인다.
2. Cloud Native Patterns
📌XaaS(Everything as a Service)와 클라우드 네이티브 패턴
📌온프레미스: 소프트웨어 등 솔루션을 클라우드 같은 원격 환경이 아닌 자체적으로 보유한 전산실 서버에 직접 설치해 운영하는 방식이다.
- Legacy(오래된 방식을 의미): 인프라부터 애플리케이션까지 구축
- IaaS(Infrasturcture as a Service): 하드웨어와 가상화, OS 등 인프라 요소를 서비스로 제공 (예: AWS EC2)
- CaaS(Container as Service): 서비스 형태로 제공되는 컨테이너를 활용하여 배포 (예: AWS ECS)
- PaaS(Platform as a Service): 애플리케이션 개발에 집중할 수 있도록 인프라와 런타임 환경을 제공 (서버 리소스 스펙과 사용시간에 따라 과금) (예: AWS Elastic Beanstalk)
- FaaS(Function as a Service): 실행할 함수코드만 구현 (함수 호출 횟수와 수행시간에 따라 과금) (예: AWS Lambda)
- SaaS(Software as a Service): 제공되는 소프트웨어 사용 (예: Gmail, Dropbox)
3. 서버리스의 형태
👉🏻서버리스의 형태는 2가지가 있다.
- BaaS(Backend as a Service)
- FaaS(Function as a Service)
👉🏻BaaS는 개발자가 직접 구현하던 백엔드의 부분부분을 서비스로 제공받는 것이다. 현재는 프론트엔드 프레임워크가 발전하며 서버를 이용하던 많은 로직들이 클라이언트에서 처리되는 경우가 늘어났다. 덕분에 서버를 직접 구축하고 프로비저닝하여 관리하는 서비스들이 등장하면서 서버에 대한 작업은 단순해지고 이를 통해 관리에 대한 리소스가 줄었다.
✍🏻예시로 Auth0, AWS Cognito같은 인증서비스나 구글의 모바일 앱 백엔드 서비스인 Firebase가 있다.
👉🏻FaaS는 함수를 서비스로 이용하는 것이다. 서버를 구성하고 배포하던 형식을 줄이고 원하는 로직만 함수를 기반으로 구현한다.
✍🏻예시로 AWS Lambda
4. 서버리스의 예
👉🏻Client → Server → Database → Server → Client로 진행되며 이를 3-Tier구성이라고 한다.
👉🏻FaaS기반의 구조는 다음과 같다. Client에서 Authentication Service를 호출한 후, 인증을 받고 API Gateway을 호출하여 원하는 함수에 접근한다. 함수는 호출 즉시 컨테이너에서 실행되며, 호출하지 않을 때는 서버가 구동되지 않는다.
💡위 2가지 구성도의 차이점은?
👉🏻3Tier는 서버가 24시간 돌아가기 때문에 접속자가 없는 시간에도 사용비 청구를 받는다. FaaS의 경우 많은 호출이 발생하는 Function에만 동시성을 올리면 된다.
5. 스케일 아웃(Scale-Out)과 스케일 업(Scale-Up)
서버 한 대로 처리가 가능한 운영환경에서 갑자기 이용자가 증가하거나 확장이 필요하다면?
- 스케일 아웃
- 스케일 업
📌스케일 아웃: 서버를 여러 대 추가하여 시스템을 확장한다.
👉🏻이 경우 각 서버별로 균등하게 부하를 나눠주기 위해 로드밸런서가 필수이다. 로드밸런서란 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나눠주는 것이다.
📌스케일 업: CPU나 RAM 등 고성능의 부품으로 업그레이드하는 것이다.
6. 서버리스를 도입하면 NoOps인가?
📌NoOps: 관리자가 없다는 의미이다. 인터넷이 발전하며 클라우드를 통해 시스템 운영자 없이도 개발자가 네트워크 및 서버 등 다양한 설정을 습득하여 직접 처리할 수 있는 환경이 되었고 직접 개발한 시스템의 장애 발생 또는 요구사항의 대응과 처리 속도가 빠르고 효율적으로 변화하며 관리자의 필요성이 줄어들어 탄생한 용어이다.
👉🏻관리포인트가 줄어들긴 하지만 없다는 것은 아니다. 때문에 운영 중인 시스템에서 문제가 발생하면 해결 전략이 필요하고, 시스템 관리자는 이를 대응하는 방법을 제시해야한다.
👉🏻때문에 초기에는 NoOps가 가능하더라도 서비스의 크기가 커질수록 운영이 필요한 시기가 온다.
7. FaaS를 이용하면 서버리스인가?
📌서버리스 아키텍처: 서버리스를 이용한 아키텍처 설계 방식이다.
📌서버리스: 필요할 때 일시적인 컴퓨팅 서비스를 받는 것이다.
👉🏻FaaS는 서버리스가 맞지만 서버리스 아키텍처와 별개로 보는 것이 맞다.
8. 서버리스를 사용하는 이유는?
👉🏻클라우드 서비스는 '서버리스 전과 후로 나뉜다'
👉🏻서버리스 이전까지 클라우드 서비스는 온프레미스 환경을 그대로 클라우드 환경으로만 옮겨 사용하는 사례가 대부분이었다.
👉🏻서버리스 이후에는 이를 이용해 프론트엔드와 백엔드를 구축하고 혹은 대용량 처리 프로세스를 구축하기도 한다.
9. 서버리스는 비싸다?
👉🏻시스템을 서버리스로 구축하면 비용이 저렴하다. AWS Lambda는 요청 수, 실행시간에 따라 비용이 발생한다. 서버리스로 구성하면 애플리케이션 전체를 배포하는 것이 아닌 특정 함수만 배포하면 되기 때문에 조금 더 가볍고 능동적으로 유지보수가 가능하다.
✍🏻넷플릭스도 이미지 프로세싱을 Lambda로 처리하는데 이로 인해 응답이 가능한 새 인스턴스 시간이 3분에서 2초로 줄었고 비용도 1000달러에서 100달러로 줄었다.
10. FaaS의 단점은?
- 상태유지가 되지 않는다.
- 컨테이너는 잠시 실행되는 환경으로 상태 비저장을 의미한다. 보완방법으로는 DB를 이용하는 방법이 있다.
- 함수가 실행되기 위해 항상 준비된 상태가 아니다.
- 실행 시 약간의 지연시간이 발생하는데 이를 '콜드 스타트'라고 한다.
- 서비스 제공사에 의존적이다.
- AWS를 이용하다가 Azure나 GCP로 변경하기 쉽지 않다.
✍🏻웜 스타트(Warm Start): 준비되어 있어 처음 호출할 때 발생하는 지연시간이 발생하지 않는다. 함수를 실행하면 함수를 실행한 컨테이너는 잠시 대기상태가 되고 이때 다시 실행하면 웜 스타트이다.
ch02 AWS란
1. Amazon Web Services 소개
📌클라우드 컴퓨팅: 인터넷(클라우드)을 통해 IT리소스(서버, 스토리지, 데이터베이스 등)를 제공하는 것이다. 비용, 속도, 확장성, 생산성, 성능, 안정성, 보안을 장점으로 꼽을 수 있다. 아래 세 가지 유형이 있다.
- 퍼블릭 클라우드: 모든 리소스를 클라우드 회사가 이용하는 것
- 프라이빗 클라우드: 독점적으로 사용해 서비스와 인프라가 개인(혹은 회사) 네트워크에서 유지되는 것
- 하이브리드 틀라우드: 퍼블릿/프라이빗의 데이터와 애플리케이션을 공유하는 것
👉🏻Amazon Web Service는 아마존 닷컴의 클라우드 컴퓨팅사업부이다. 서비스가 접두어에 따라 나뉜다.
- AWS ○○○: 도구
- Amazon ○○○: 재료
💡ex) AWS Lambda로 Amazon DynamoDB를 사용한다.
👉🏻AWS는 서비스 지역에 따라 비용과 퍼포먼스가 다르다.
- 리전(Regions): 세계 여러 곳 지역마다 독립적으로 존재하는 AWS 데이터 센터들이다.
- 가용 영역(Availability Zones): 리전 안에 존재하는 데이터 센터의 논리적인 그룹이다.
- 로컬 영역(Local Zones): 리전 안에 존재하고 특정지역에 보다 빠르게 통신하기 위해 등장했다.
- 엣지 로케이션(Edge Location): AWS가 CDN을 제공하기 위해 만든 CloudFront의 캐시 서버이다.
2. AWS 가입하기
ch03 권한관리
1. AWS IAM
📌IAM: AWS Identity and Access Management, AWS의 권한을 관리하는 서비스이다.
- IAM User - 사용자
- IAM Group - 사용자 그룹
- IAM Role - 권한
- IAM Policy - 정책
👉🏻루트 권한은 Master권한이라고 생각하면 이해하기 쉽고 이를 이용해서 서비스를 유지보수하는 것은 매우 위험하다. 때문에 사내에서 AWS를 이용하고자 하는 경우 각자 부서/팀별로 계정을 생성하여 부여하는데 이 때 IAM을 이용해 필요한 권한을 세분화하여 Role을 부여해 불필요한 접근을 막는다.
👉🏻IAM에서는 AWS 계정 인증에 MFA(Multi Factor Authentication)를 지원한다. 여기서 팩터란 사용자의 신원을 확인하는 방법에 따라 3가지 방법으로 나뉘는데 이를 인증 팩터라고 한다.
- 지식 기반 - ID/PW와 같이 알고 있는 인증 정보를 이용한 방법
- 소유 기반 - 휴대폰 SMS인증 등 사용자가 소유한 것을 이용해 인증하는 방법
- 속성 기반 - 고유의 속성을 이용하는 것으로 지문 인식, 홍채 인식 등을 이용하여 인증하는 방법
👉🏻우리에게 익숙한 ARS인증, SMS인증, OTP인증, 공인인증서 등이 MFA와 같다.
2. 사용자 계정 생성 및 권한 부여
👉🏻루트 권한의 계정보다 이에 준하는 권한을 가진 사용자 계정을 생성해 사용하는 것이 좋다.
'GDSC HUFS 3기 > Cloud Computing' 카테고리의 다른 글
[AWS] AWS Lambda/cold start/warm start/lambda 런타임/lambda event/메모리 할당/실행 제한 시간 (0) | 2022.05.12 |
---|---|
[AWS] 서버리스란 무엇인가 (0) | 2022.05.12 |
[AWS] Amazon VPC/서브넷/인터넷 게이트웨이/네트워크 ACL/보안 그룹/피어링 (0) | 2022.05.12 |
[AWS] 서버리스란 무엇인가 (0) | 2022.05.05 |
[AWS] 서버리스란? / 권한 관리 하기 (0) | 2022.05.05 |