000 | 00000nam c2200205 c 4500 | |
001 | 000046136059 | |
005 | 20221207095946 | |
007 | ta | |
008 | 221206s2022 ulka 001a kor | |
020 | ▼a 9791165921842 ▼g 93000 | |
040 | ▼a 211009 ▼c 211009 ▼d 211009 | |
082 | 0 4 | ▼a 006.78 ▼2 23 |
085 | ▼a 006.78 ▼2 DDCK | |
090 | ▼a 006.78 ▼b 2022z3 | |
100 | 1 | ▼a 최재영 |
245 | 1 0 | ▼a 서버리스 이제는 AWS Lambda로 간다 : ▼b 설계, 개발, 배포 및 모니터링 지표와 비용 계산까지 / ▼d 최재영 지음 |
260 | ▼a 서울 : ▼b 비제이퍼블릭, ▼c 2022 | |
300 | ▼a xvii, 705 p. : ▼b 삽화 ; ▼c 25 cm | |
500 | ▼a 색인수록 | |
500 | ▼a 부록: A. 도메인 구입, B. 구글 OAuth 구성 | |
945 | ▼a ITMT |
소장정보
No. | 소장처 | 청구기호 | 등록번호 | 도서상태 | 반납예정일 | 예약 | 서비스 |
---|---|---|---|---|---|---|---|
No. 1 | 소장처 과학도서관/Sci-Info(1층서고)/ | 청구기호 006.78 2022z3 | 등록번호 121261322 | 도서상태 대출가능 | 반납예정일 | 예약 | 서비스 |
컨텐츠정보
책소개
AWS Lambda는 이벤트 기반의 서버리스 컴퓨팅 플랫폼이다. 제한된 CPU, 메모리, 수행 시간을 갖지만 사용한 만큼만 비용을 지불하고 요청량에 맞게 인스턴스가 실행되어 빠르게 확장 및 축소할 수 있다. 그래서 Lambda의 한도와 한계를 이해하고 다룰 수 있다면, 다양한 서비스의 시나리오를 구현하면서도 인프라와 비용 걱정을 크게 줄일 수 있다. 빠른 출시를 결심했거나 토이 프로젝트를 진행할 경우라면 서버리스 플랫폼 사용이 큰 도움이 될 것이다.
이 책은 Lambda를 비롯해 AWS가 제공하는 여러 서버리스 플랫폼을 활용한다. 5가지 서비스 예제를 통해 그 예제 안에서 활용하는 서버리스 플랫폼을 소개하고 직접 실습한다. 이해를 돕기 위해 각 장은 예제에 대한 서비스 소개 및 설계와 구현, 로컬 테스트 환경 구축 및 테스트, 서버리스 스택 배포와 모니터링, 상용 확장을 위해 고민해야 하는 요소와 서버리스 서비스의 한계와 한도, 트래픽 규모를 가정하고 이때 발생하는 비용을 계산한다.
5가지 웹 서비스를 직접 만들면서 배우는 서버리스 플랫폼!
AWS Lambda는 이벤트 기반의 서버리스 컴퓨팅 플랫폼이다. 제한된 CPU, 메모리, 수행 시간을 갖지만 사용한 만큼만 비용을 지불하고 요청량에 맞게 인스턴스가 실행되어 빠르게 확장 및 축소할 수 있다. 그래서 Lambda의 한도와 한계를 이해하고 다룰 수 있다면, 다양한 서비스의 시나리오를 구현하면서도 인프라와 비용 걱정을 크게 줄일 수 있다. 빠른 출시를 결심했거나 토이 프로젝트를 진행할 경우라면 서버리스 플랫폼 사용이 큰 도움이 될 것이다.
이 책은 Lambda를 비롯해 AWS가 제공하는 여러 서버리스 플랫폼을 활용한다. 5가지 서비스 예제를 통해 그 예제 안에서 활용하는 서버리스 플랫폼을 소개하고 직접 실습한다. 이해를 돕기 위해 각 장은 예제에 대한 서비스 소개 및 설계와 구현, 로컬 테스트 환경 구축 및 테스트, 서버리스 스택 배포와 모니터링, 상용 확장을 위해 고민해야 하는 요소와 서버리스 서비스의 한계와 한도, 트래픽 규모를 가정하고 이때 발생하는 비용을 계산한다. 저자의 노하우가 듬뿍 담긴 이 책으로 웹 서비스 개발을 준비해 보자.
“웹 서비스는 개발하고 싶은데, 서버 인프라는 어떡하지?”
서버리스 플랫폼인 AWS Lambda로 고민 해결!
수많은 서버리스 SaaS가 있지만 이 책에서는 AWS Lambda를 중점으로 다룹니다. 사진 최적화 서비스, 추천 서비스, 게임 서버, 채팅, 블로그 서비스를 각각 단계별로 만들어보면서 서버리스 플랫폼을 배울 수 있습니다. 저자의 친절하고 자세한 설명으로 입문자도 충분히 이해하며 따라 해볼 수 있습니다.
이 책의 구성
- 1장: 서버리스 서비스의 사용 이유 소개
- 2장: Serverless Framework를 익히고 타입스크립트 기반의 개발 환경 구축
- 3장: 사진을 업로드한 후 화질을 적당히 낮춰 CDN으로 제공하는 서비스 개발
- 4장: DynamoDB, MySQL, SQLite를 저장소로 활용하는 블로그 서비스 개발
- 5장: Word2vec을 활용한 문서 ID 기반의 임베딩 구축과 이를 제공하는 추천 서비스 개발
- 6장: WebSocket API를 활용한 채팅 서비스 개발
- 7장: 세션 기반의 게임 서버 개발
이 책의 대상 독자
- AWS 서버리스 플랫폼으로 웹 서비스를 개발해보고 싶은 분
- 만들어야 할 웹 서비스가 있지만 인프라 관리가 피곤한 분
- 사내 개발자 도구를 웹 서비스로 빠르게 만들어야 하는데 인프라가 마땅치 않은 분
- Lambda를 좀 더 다양한 패턴으로 사용해보고 싶은 분
- 간단한 게임 서버를 인프라 고민 없이 개발해보고 싶은 분
정보제공 :

저자소개
최재영(지은이)
개발자들이 도메인 개발에만 집중할 수 있도록 그 외의 다른 모든 부분을 자동화하는데 관심이 많다. 특히 서비스 개발 초반에 빌드-배포-모니터링 운영 비용을 크게 낮출 수 있는 서버리스의 매력에 푹 빠져 있다. 틈틈이 서버리스 서버 개발자에 도전하고 있다. 블루홀 스튜디오에서 게임 개발자로 경력을 시작한 이후 웹 서비스, 추천 백엔드, 빌링을 거쳐 다시 웹 서비스 업무를 수행하고 있다. 여러 도메인의 백엔드를 개발하며 얻은 경험을 토대로 기존의 백엔드 시스템을 서버리스 기반으로 옮기는 연습을 하기도 한다. 다양한 토이 프로젝트를 AWS Lambda 기반으로 올려 비용을 최적화하는 것을 즐기며 가끔 만나는 지인들에게 서버리스 플랫폼 사용을 권유하는 활동을 한다.

목차
지은이 소개 서문 베타 리더 추천사 1장 준비하기 1-1 AWS 서버리스 ___1-1-1 기존의 서버 개발 ___1-1-2 서버리스 기반의 서비스 개발 1-2 개발 환경 구축 ___1-2-1 AWS 계정 설정 ___1-2-2 AWS CLI 설치 ___1-2-3 Node.js ___1-2-4 nvm ___1-2-5 타입스크립트 ___1-2-6 Visual Studio Code ___1-2-7 direnv ___1-2-8 Docker ___1-2-9 리눅스용 윈도우 하위 시스템(WSL) 1-3 Severless Framework 소개 ___1-3-1 간단한 선언 예시 ___1-3-2 도구 익히기 2장 Hello API 2-1 Hello API 자바스크립트 구현 2-2 Hello API 타입스크립트 구현 ___2-2-1 템플릿으로 시작 ___2-2-2 타입스크립트 적용 ___2-2-3 웹팩 적용 ___2-2-4 source-map 적용 ___2-2-5 serverless.ts 사용 2-3 상용 서비스 고려 ___2-3-1 서비스 한도 ___2-3-2 API Gateway의 한도 ___2-3-3 API Gateway 통합 Lambda의 한도 ___2-3-4 CloudWatch Logs의 한도 ___2-3-5 운영 전략 2-4 모니터링 ___2-4-1 Lambda의 로그 확인 ___2-4-2 API Gateway의 로그 확인 ___2-4-3 Lambda의 지표 ___2-4-4 Lambda의 호출 지표 ___2-4-5 Lambda의 성능 지표 ___2-4-6 Lambda의 동시성 지표 ___2-4-7 Lambda의 동시성 ___2-4-8 Lambda의 지표 확인 ___2-4-9 API Gateway의 지표 확인 ___2-4-10 CloudWatch 대시보드 구성 ___2-4-11 CloudWatch 경보 설정 2-5 비용 계산 ___2-5-1 API Gateway 비용 ___2-5-2 Lambda 비용 ___2-5-3 Lambda와 EC2의 가격 비교 ___2-5-4 Lambda의 메모리와 CPU의 관계 ___2-5-5 CloudWatch 비용 계산 ___2-5-6 경보 이메일 전송 비용 ___2-5-7 Hello API 비용 계산 2-6 정리 3장 사진 최적화 서비스 3-1 서비스 소개 및 설계 3-2 Lambda에서 외부 프로세스 실행 준비 3-3 첫 번째 시스템 구현 ___3-3-1 S3와 CloudFront 인프라 준비 ___3-3-2 awscli 도구로 인프라 설정 ___3-3-3 CloudFormation으로 인프라 선언 ___3-3-4 Serverless Framework에 인프라 선언 통합 ___3-3-5 S3 Bucket에 파일 업로드 ___3-3-6 중복 업로드 막기 3-4 두 번째 시스템 구현: Public, Private, Bucket 분리 3-5 세 번째 시스템 구현: S3 이벤트로 최적화 수행 3-6 상용 서비스 고려 3-7 모니터링 3-8 비용 계산 ___3-8-1 S3 비용 ___3-8-2 CloudFront 비용 ___3-8-3 서비스 비용 계산 ___3-8-4 비용 줄이기 3-9 정리 4장 블로그 서비스 4-1 서비스 소개 및 설계 4-2 기본 API 구현 ___4-2-1 models.ts 구현 ___4-2-2 handler.ts 구현 ___4-2-3 storage.ts 구현 4-3 DynamoDB 연동 ___4-3-1 자원 선언 ___4-3-2 AWS-SDK 라이브러리 추가 ___4-3-3 글에 대한 CRUD 구현 ___4-3-4 글 목록 구현 ___4-3-5 로컬 환경 준비 ___4-3-6 Serverless offline ___4-3-7 로컬 DynamoDB 준비 ___4-3-8 로컬 테스트 ___4-3-9 배포 및 테스트 ___4-3-10 정리 4-4 MySQL 연동 ___4-4-1 자원 선언 ___4-4-2 방화벽 설정 ___4-4-3 MySQL 라이브러리 추가 ___4-4-4 글에 대한 CRUD 구현 ___4-4-5 로컬 테스트 ___4-4-6 배포 ___4-4-7 MySQL 테이블 작성 ___4-4-8 테스트 ___4-4-9 정리 4-5 SQLite 연동 ___4-5-1 자원 선언 ___4-5-2 VPC 설정 ___4-5-3 SQLite 라이브러리 추가 ___4-5-4 Better SQLite3 준비 ___4-5-5 SQLite 기반 쿼리 함수 구현 ___4-5-6 잠금 함수 구현 ___4-5-7 CRUD 함수 구현 ___4-5-8 로컬 S3 준비 ___4-5-9 로컬 Redis 준비 ___4-5-10 로컬 테스트 ___4-5-11 배포 ___4-5-12 느린 응답 시간 ___4-5-13 응용 ___4-5-14 정리 4-6 저장소 비교 ___4-6-1 응답 지연 시간 ___4-6-2 비용 ___4-6-3 유지 보수 ___4-6-4 유리한 시나리오 4-7 프런트엔드 연동 ___4-7-1 create-react-app ___4-7-2 웹 페이지 설계 ___4-7-3 컴포넌트 기본 ___4-7-4 서버 API 연동 ___4-7-5 컴포넌트 구현 ___4-7-6 프록시 서버 ___4-7-7 개발 서버 시작 ___4-7-8 주소 기반 라우트 ___4-7-9 빌드 ___4-7-10 로컬 테스트 ___4-7-11 서버 주소 문제 해결 ___4-7-12 정리 4-8 S3와 CloudFront를 사용해 배포 ___4-8-1 서버 API 주소 설정 ___4-8-2 CORS 문제 해결 ___4-8-3 배포 4-9 CloudFront의 다중 오리진 사용 ___4-9-1 서버 API 주소 설정 ___4-9-2 배포 ___4-9-3 동작 이해 ___4-9-4 장점과 단점 4-10 API Gateway에서 웹 페이지 제공 ___4-10-1 서버리스 스택 설정 ___4-10-2 서버 API 주소 설정 ___4-10-3 배포 ___4-10-4 도메인 연결 4-11 REST API 사용 ___4-11-1 서버리스 스택 변경 ___4-11-2 코드 변경 ___4-11-3 로컬 테스트 ___4-11-4 X-Ray 추가 ___4-11-5 X-Ray 지표 분석 ___4-11-6 정리 4-12 인증 구현 ___4-12-1 Lambda 인증 ___4-12-2 함수 구현 ___4-12-3 서버리스 스택 변경 ___4-12-4 빌드 오류 수정 ___4-12-5 CloudFront 수정 ___4-12-6 프런트엔드 작업 ___4-12-7 테스트 ___4-12-8 정리 4-13 상용 서비스 고려 ___4-13-1 DynamoDB ___4-13-2 MySQL ___4-13-3 SQLite ___4-13-4 API 요청 횟수 제한 ___4-13-5 인증 ___4-13-6 CloudFront와 S3 4-14 모니터링 ___4-14-1 DynamoDB 모니터링 ___4-14-2 MySQL 모니터링 ___4-14-3 Redis 모니터링 ___4-14-4 인증 실패율 4-15 비용 계산 ___4-15-1 시나리오 ___4-15-2 시스템 구성 ___4-15-3 CloudFront와 S3 오리진 사용 ___4-15-4 API Gateway에서 웹 페이지 제공 ___4-15-5 API Gateway의 API 요청 처리 비용 ___4-15-6 Lambda 권한 부여자 실행 비용 ___4-15-7 통합된 Lambda 실행 비용 ___4-15-8 DynamoDB 비용 ___4-15-9 MySQL 비용 ___4-15-10 SQLite 데이터베이스를 위한 S3 비용 ___4-15-11 비용 정리 ___4-15-12 비용 줄이기 4-16 정리 5장 추천 서비스 5-1 시나리오 ___5-1-1 Word2vec ___5-1-2 기반 데이터 5-2 개발 환경 구축 ___5-2-1 파이썬 환경 구축 ___5-2-2 AWS ECR 로그인 ___5-2-3 SAM CLI 설치 5-3 시스템 설계 5-4 학습 구현 ___5-4-1 의존 라이브러리 설치 ___5-4-2 이벤트 다운로드 ___5-4-3 학습 ___5-4-4 S3 Bucket 준비 ___5-4-5 배포 5-5 추천 API 구현 ___5-5-1 추천 구현 ___5-5-2 SAM 프로젝트 작성 ___5-5-3 로컬 테스트 ___5-5-4 배포 ___5-5-5 수행 시간 확인 ___5-5-6 ECR 리포지토리 관리 5-6 서비스 API 구현 ___5-6-1 추적 쿠키 발급 API ___5-6-2 좋아요 횟수 조회 API ___5-6-3 좋아요 API ___5-6-4 VPC에서 SQS 연결 ___5-6-5 서버리스 스택 구성 ___5-6-6 로컬 테스트 ___5-6-7 배포 5-7 웹 페이지 구현 ___5-7-1 추적 쿠키 사용 ___5-7-2 좋아요 노출 ___5-7-3 좋아요 버튼 ___5-7-4 추천 목록 ___5-7-5 프록시 서버 구성 ___5-7-6 로컬 테스트 5-8 CDN 배포 5-9 상용 서비스 고려 ___5-9-1 SQS 이벤트 채널 ___5-9-2 추천 Lambda의 수행 시간 ___5-9-3 AVX2 지원 ___5-9-4 모델 파일의 크기 5-10 모니터링 ___5-10-1 SQS 모니터링 ___5-10-2 ECR 모니터링 ___5-10-3 PrivateLink 모니터링 5-11 비용 계산 ___5-11-1 시나리오 ___5-11-2 고정 비용 ___5-11-3 API 비용 ___5-11-4 비용 일람 ___5-11-5 비용 줄이기 ___5-12 정리 6장 채팅 6-1 WebSocket API 6-2 에코 ___6-2-1 로컬 테스트 ___6-2-2 배포 ___6-2-3 라우트 선택 표현식 활용 6-3 채팅 전파 ___6-3-1 연결 ID 관리 ___6-3-2 메시지 전파 ___6-3-3 서버리스 스택 선언 ___6-3-4 로컬 테스트 ___6-3-5 배포 6-4 주제-구독-전파 ___6-4-1 테이블 설계 ___6-4-2 DynamoDB 테이블 선언 ___6-4-3 DynamoDB 연동 구현 ___6-4-4 연결 맺음과 끊음의 처리 ___6-4-5 메시지 전파 처리 ___6-4-6 사용자 및 주제 생성 API ___6-4-7 함수 등록 ___6-4-8 로컬 테스트 ___6-4-9 배포 6-5 인증 ___6-5-1 Lambda 권한 부여자 구현 ___6-5-2 이벤트 처리 함수 수정 ___6-5-3 서버리스 스택 수정 ___6-5-4 WebSocket API 로깅 6-6 사용자 지정 도메인 6-7 상용 서비스 고려 ___6-7-1 채팅 서비스 ___6-7-2 이벤트 채널 ___6-7-3 WebSocket API의 한계 ___6-7-4 글로벌 서비스 고려 6-8 모니터링 ___6-8-1 WebSocket API 지표 6-9 비용 계산 ___6-9-1 시나리오 ___6-9-2 WebSocket 비용 ___6-9-3 DynamoDB 비용 ___6-9-4 Lambda 비용 ___6-9-5 비용 일람 ___6-9-6 비용 줄이기 6-10 정리 7장 게임 서버 7-1 온라인 뱀 게임 7-2 VPC ___7-2-1 VPC 인프라 선언 ___7-2-2 Redis 인스턴스 선언 ___7-2-3 서버리스 스택 선언 ___7-2-4 연결성 분석기 7-3 게임 서버 구현 ___7-3-1 메시지 정의 ___7-3-2 WebSocket 처리 함수 구현 ___7-3-3 사용자 지정 도메인 연결 7-4 매칭 구현 ___7-4-1 매칭 요청 처리 구현 ___7-4-2 매칭 로직 구현 ___7-4-3 매칭 수행 및 처리 연장 7-5 게임 구현 ___7-5-1 WebSocket 이벤트 전달 구현 ___7-5-2 게임 플레이어 구현 ___7-5-3 게임 로직 구현 7-6 테스트와 배포 ___7-6-1 로컬 테스트 ___7-6-2 배포 7-7 웹 클라이언트 구현 ___7-7-1 프로젝트 시작 ___7-7-2 메시지와 모델 선언 ___7-7-3 WebSocket 연결 ___7-7-4 컴포넌트 구현 ___7-7-5 스타일링 ___7-7-6 효율적인 다시 그리기 ___7-7-7 로컬 테스트 ___7-7-8 웹 클라이언트 배포 7-8 상용 서비스 고려 ___7-8-1 VPC의 제약 조건 ___7-8-2 WebSocket API의 제약 조건 ___7-8-3 Lambda의 수행 시간 제약 조건 ___7-8-4 Lambda의 동시 실행 제약 조건 ___7-8-5 Redis 유형 검토 ___7-8-6 응답 지연 시간 개선 ___7-8-7 매칭 개선 7-9 모니터링 ___7-9-1 WebSocket API 지표 ___7-9-2 Lambda 지표 ___7-9-3 Redis 지표 7-10 비용 계산 ___7-10-1 시나리오 ___7-10-2 VPC 비용 ___7-10-3 WebSocket API 비용 ___7-10-4 Lambda 비용 ___7-10-5 비용 일람 ___7-10-6 비용 줄이기 7-11 정리 부록 A 도메인 구입 A-1 Route53에서 도메인 구입 A-2 타사 도메인 연결 A-3 도메인 레코드 세트 추가 A-4 인증서 발급 부록 B 구글 OAuth 구성 B-1 프로젝트 생성 B-2 동의 화면 구성 B-3 클라이언트 ID 생성