workshop-serverless-graphql
workshop-serverless-graphql copied to clipboard
๐ฃ [AWSKRUG Serverless Group 2019] Serverless GraphQL Workshop
์๋ฒ๋ฆฌ์ค GraphQL ์ํฌ์ต ๐จ
์๋ฒ๋ฆฌ์ค GraphQL ์ํฌ์ต์ ์ค์ ์ฌ๋ฌ๋ถ์ ํ์ํฉ๋๋ค!
์ด ์ํฌ์์ ๊ธฐ์กด์ GraphQL์ ๋ํ ๋ฐฐ๊ฒฝ์ด ์๋ ๋ถ๋ค์ ์ํด ์ค๋น๋์์ต๋๋ค. GraphQL ๋ฐฑ์๋์ ๋ํ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ํต์ฌ ๊ฐ๋ ์ ๋ด์์ผ๋ฉฐ, ์ค์ Production์์ ์ฌ์ฉ๋๋ ๋๊ตฌ๋ค์ ์๊ฐํ๋ฉฐ Production ๋ ๋ฒจ์์์ GraphQL์ด ๊ฐ์ง ํต์ฌ ๊ฐ์น๊ฐ ๋ฌด์์ธ์ง ๋ฐฐ์ฐ๊ณ , ๋ฐ๋ผํ ์ ์๋ ์๊ฐ์ ๊ฐ์ง๋๋ค.
๋ณธ ์ํฌ์ต์ AWSKRUG ์๋ฒ๋ฆฌ์ค ๋ชจ์์ด ์ฃผ์ตํฉ๋๋ค. ์ฐธ๊ฐ์ ์ฒญ
๐ Written with ๐ฅ by Tony
์ด๋ฐ ๊ธฐ์ ์คํ์ด ์ฌ์ฉ๋์์ด์ ๐ง
์ธ์ด ๋ฐ ํ๊ฒฝ
- TypeScript ๐
- Node.js
- Babel
- Webpack
- Dotenv
API ์๋ฒ
Data Loader + ORM
- Docker
- Prisma ๐
- AWS Fargate ๐
Database
Web Client
๊ธฐํ
๋ฏธ๋ฆฌ ์ค๋นํด์ฃผ์ธ์
0. ๋ณธ Github Repository๋ฅผ ๋ณธ์ธ์ ์ปดํจํฐ์ ๋ณต์ฌํด์ฃผ์ธ์
์ค๊ฐ์ค๊ฐ ์ค์ต์ ํ์ํ ํ์ผ๋ค์ด ์ ๋ก๋ ๋์ด์์ต๋๋ค. ์ธ์ ์์ ์ ๋ฏธ๋ฆฌ ๋ค์ด ๋ฐ์์ฃผ์ธ์.
-
.zip
ํ์ผ๋ก ๋ค์ด๋ก๋ - ๋๋
$ git clone https://github.com/tonyfromundefined/serverless-graphql-workshop
1. PC ๋๋ Mac
๋ณธ ์ธ์ ์ ์ฝ๋ฉ ๊ณผ์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ํ CLI(Command Line Interface) ์กฐ์์ด ๊ผญ ํ์ํฉ๋๋ค. ๋ชจ๋ฐ์ผ ํ๊ฒฝ(iPhone, iPad, Android)์์๋ ์งํ์ด ๋ถ๊ฐ๋ฅํ๋ ๊ผญ PC/Mac ํ๊ฒฝ์์ ์งํํ์ธ์.
2. AWS ๊ณ์
- AWS ๊ณ์ ๋ง๋ค๊ธฐ ์ด๋
๋ณธ ๊ฐ์ด๋๋ ํ๋ช ์ด ํ๋์ AWS ๊ณ์ ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. AWS API Gateway, Lambda, ECS, RDS, S3, CloudWatch์ ์ ๊ทผํ ์ ์์ด์ผ ํ๋ฉฐ, ๋ค๋ฅธ ์ฌ๋๊ณผ ๊ณ์ ์ ๊ณต์ ํ๊ฒ ๋๋ฉด ํน์ ๋ฆฌ์์ค์ ๋ํด ์ถฉ๋์ด ๋ฐ์ ํ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ๊ถ์ฅํ์ง ์์ต๋๋ค.
[์ค์] ๋ณธ ์ํฌ์ต์์ ์ฌ์ฉํ๋ 'AWS Fargate' ์๋น์ค๋ ๊ณผ๊ธ๋ฉ๋๋ค. ์ค์ต์ด ๋๋๊ณ ๋ฐ๋ก ์ญ์ ํ์ธ์.
AWS Fargate๋ฅผ ์ ์ธํ ๋ณธ ์ํฌ์ต์ ์ผํ์ผ๋ก ์์ํ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ AWS ๊ณ์ ์ด 12๊ฐ์ ๋ฏธ๋ง์ธ ๊ฒฝ์ฐ, ์ ๊ณตํ๋ AWS ํ๋ฆฌํฐ์ด๋ก ์ถฉ๋ถํ ๊ฐ๋ฅํฉ๋๋ค. ๋จ, ์ฌ์ฉ๋์ด ํ๋ฆฌํฐ์ด๋ฅผ ๋์ด์๋ ๊ฒฝ์ฐ, ๊ณผ๊ธ ๋ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์, ์๋ก์ด ์ค์ต์ฉ ๊ณ์ ์ ๋ง๋์๊ธธ ๊ถ์ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ AWS ํ๋ฆฌ ํฐ์ด ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
3. ์น ๋ธ๋ผ์ฐ์
- Chrome ์ต์ ๋ฒ์ ๋ค์ด๋ก๋
Internet Explorer๋ AWS Web Console์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
4. ํ ์คํธ ์๋ํฐ
- VS Code ๋ค์ด๋ก๋
๋ณธ ์ค์ต ์ธ์ ์๋ ์ค์ ์ฝ๋ฉ์ด ํฌํจ๋ฉ๋๋ค. ์ธ์ ๋ฐํ์๋ VS Code๋ฅผ ์ฌ์ฉํ๋, ์ฝ๋ฉ์ ์ต์ํ์ง ์์ผ์ ๋ถ์ ๋ฐ๋ผํ๊ธฐ ์ฝ๋๋ก ํ๊ฒฝ์ ๋์ผํ๊ฒ ์ค์ ํด์ฃผ์ธ์.
5. Node.js
- Node.js ์ต์ ๋ฒ์ ๋ค์ด๋ก๋
์ ๊ทธ๋ผ ์ด์ ์์ํด๋ณผ๊น์?
-
GraphQL ์ดํด๋ณด๊ธฐ
- GraphQL์ด๋?
- GraphQL Type ์์คํ
๊ณผ
Query
,Mutation
Type - Nexus๋ก ์์ํ๋ Code-First GraphQL ๊ฐ๋ฐ
- GraphQL Playground
-
Task
ํ์ ๊ณผ ์ฟผ๋ฆฌ, ๋ฎคํ ์ด์ ๋ง๋ค๊ธฐ
-
Serverless๋ก GraphQL API ๋ฐฐํฌํ๊ธฐ
- IAM ์ฌ์ฉ์ ์์ฑํ๊ธฐ
- Serverless Framework์ ์ฌ์ฉํด Node.js ํ๋ก์ ํธ ๋ฐฐํฌํ๊ธฐ
- AWS์ Prisma ๋ฐฐํฌํ๊ธฐ (CloudFormation)
-
Prisma ์ฌ์ฉํ๊ธฐ
- Prisma๋?
- Prisma ์์ํ๊ธฐ
- Prisma Client ์ฌ์ฉํด๋ณด๊ธฐ
-
nexus-prisma
๋ฅผ ์ฌ์ฉํด, Prisma ์ฐ๊ฒฐํ๊ธฐ
- React.js์์ GraphQL API ์ฌ์ฉํ๊ธฐ
-
์ญ์ ํ๊ธฐ
- API ๋ฐฐํฌ ์ญ์ ํ๊ธฐ
- CloudFormation Stack ์ญ์ ํ๊ธฐ
- IAM ์ฌ์ฉ์ ์ญ์ ํ๊ธฐ
ํ ์ผ
Feature Request๋ฅผ ์ํ์๋ฉด, ์ ์ด์๋ฅผ ์์ฑํด์ฃผ์ธ์. ๋ํ, Pull Request๋ ์ธ์ ๋ ํ์์ ๋๋ค.๐
- [x] macOS
- [x] Windows
- [x] CMD
- [x] Powershell
- [ ] WSL Bash
Cheatsheets
- ์์ฑ๋ ์๋ฒ ํ๋ก์ ํธ
- ์์ฑ๋ ํด๋ผ์ด์ธํธ ํ๋ก์ ํธ