[AWS] AppSync: ์‹œ์ž‘

AppSync๋Š” ์•„๋งˆ์กด์—์„œ ์ œ๊ณตํ•˜๋Š” GraphQL ์ „์šฉ ์„œ๋น„์Šค๋‹ค.

๊ทธ๋ƒฅ ์ง์ ‘ GraphQL ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์„ ๋•ก๊ฒจ๋‹ค๊ฐ€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๊ฑธ ์‚ฌ์šฉํ•˜๋ฉด ๊ท€์ฐฎ์€ ๊ด€๋ฆฌ์‚ฌํ•ญ๋“ค์„ ๋„˜๊ธธ ์ˆ˜ ์žˆ์–ด์„œ ํŽธ๋ฆฌํ•œ ๋ถ€๋ถ„์ด ์ข€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ AppSync์—์„œ๋Š” ์Šคํ‚ค๋งˆ์™€ ๋ฆฌ์กธ๋ฒ„๋งŒ ์ •์˜ํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ’๋“ค์€ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๊ตฌ์กฐ๋‹ค.

๊ทธ๋ฆฌ๊ณ  VTL์ด๋ผ๋Š” ์ „์šฉ ํ…œํ”Œ๋ฆฟ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ ์ด ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋‹ค.

๊ทผ๋ฐ ์ด๊ฒŒ ์ข€.. ํ˜ธ๋ถˆํ˜ธ๊ฐ€ ๋งŽ์ด ๊ฐˆ๋ฆฐ๋‹ค.
์†Œ์Šค๋ฅผ ์งœ์„œ ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ฝ˜์†” ํŽ˜์ด์ง€ ์ž์ฒด์—์„œ ์Šคํ‚ค๋งˆ์™€ ๋ฆฌ์กธ๋ฒ„, ์—ฐ๋™ ๋ฌธ์ œ๋“ค์„ ๋‹ค ํ•ด๊ฒฐํ•˜๋Š” ํ˜•์‹์ด๊ณ , ํ˜‘์—…์ด๋‚˜ ํ˜•์ƒ๊ด€๋ฆฌ ๊ฐ™์€๊ฒŒ ์ƒ๋‹นํžˆ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์•„์ง์€ ํ”„๋กœ๋•์…˜์— ์ž˜ ์“ฐ์ง€ ์•Š๋Š” ๋“ฏํ•œ ๋ชจ์–‘์ƒˆ๋‹ค.

ํ•œ๋ฒˆ ๋ณด์ž.
ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ ์ƒ์„ฑ์„ ๋ˆ„๋ฅธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒ˜ํ”Œ์„ ๊ณ ๋ฅด๋ฉด ๋˜๋Š”๋ฐ, ๋”ฑํžˆ ๊ตฌ์„ฑํ™˜๊ฒฝ๊ฐ™์€๊ฒŒ ๋‹ค๋ฅธ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ์˜ˆ์ œ์ฝ”๋“œ๋งŒ ๋‹ค๋ฅธ๊ฑฐ๋‹ค.

๋‚œ ์ด๋ฒคํŠธ ์•ฑ์œผ๋กœ ํ–ˆ๋‹ค.

์ด๋ฆ„ ๊ณจ๋ผ์„œ ์ƒ์„ฑ ๋ˆ„๋ฅด๋ฉด

ํ . ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค.

์ € ์ฟผ๋ฆฌ ํŽ˜์ด์ง€๋Š” ์‹ค์ œ mutation์ด๋‚˜ query ๋“ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์ด๊ณ 

์ด ์Šคํ‚ค๋งˆ ํŽ˜์ด์ง€๋Š” ์‹ค์ œ ์Šคํ‚ค๋งˆ ํƒ€์ž…๋“ค์„ ๋‹ค๋ฃจ๋Š” ๊ณณ์ด๋‹ค.

๊ทผ๋ฐ ์ด๋Ÿฐ๊ฑฐ๋งŒ ๋ด์„œ ๋ญํ•˜๊ฒ ๋Š”๊ฐ€.
์ง์ ‘ ์ถ”๊ฐ€ํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ๋ผ๋„ ํ•œ๋ฒˆ ๋Œ๋ ค๋ณด์ž

๋ฆฌ์†Œ์Šค ์ƒ์„ฑ์„ ๋ˆ„๋ฅด๊ณ 


๊ฐ„๋‹จํ•˜๊ฒŒ ํƒ€์ž…์„ ํ•œ๋ฒˆ ์ •์˜ํ•ด๋ดค๋‹ค.
id์™€ String๋งŒ ๊ฐ€์ง€๋Š” ๋‹จ์ˆœํ•œ ํƒ€์ž…์ด๋‹ค.

๊ธฐ๋ณธํ‚ค๋ž‘ ์ •๋ ฌํ‚ค.. ๋“ฑ๋“ฑ์ด ์žˆ๋Š”๋ฐ ์ด๊ฑด ์ผ๋‹จ ๋„˜๊ธฐ๊ณ 

๊ด€๋ จ ์Šคํ‚ค๋งˆ ์ •์˜๋„ ์–ด๋А์ •๋„ ์ž๋™์œผ๋กœ ํ•ด์ค€๋‹ค.
์ž๋™์ƒ์„ฑ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ™œ์„ฑํ™”ํ•œ๋‹ค๋ฉด.
์ด๋Ÿฐ์‹์œผ๋กœ ๋œฐ ๊ฒƒ์ด๋‹ค.

query์—” ๋‹จ์ผ ์กฐํšŒ์™€ ๋ฆฌ์ŠคํŠธ ์กฐํšŒ,
mutation์—” ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ
subscription์—” ๊ทธ์— ๋Œ€ํ•œ ํŠธ๋ฆฌ๊ฑฐ..

๊ทธ๋ฆฌ๊ณ  ๊ธฐํƒ€ input ํƒ€์ž…๋“ค๋„ ์ž์ž˜ํ•˜๊ฒŒ ์ •์˜ํ•ด์ค€๋‹ค.

๊ทผ๋ฐ ์ด ์ƒํƒœ์—์„  ์ˆ˜์ •์€ ์•ˆ๋˜๊ณ  ์ƒ์„ฑํ•œ ๋‹ค์Œ์—๋งŒ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋”๋ผ.

๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ๋‹น์—ฐํžˆ ์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€๊ฐ€ ๋œ๋‹ค.
๋ฆฌ์กธ๋ฒ„๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ด๋ธ”์˜ ํ˜•ํƒœ๋กœ ๋งคํ•‘์ด ๋˜์–ด์žˆ๋‹ค.

์ €๊ธฐ ๋ฆฌ์กธ๋ฒ„๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ•ด๋‹น ์ฟผ๋ฆฌ ๋ฆฌ์กธ๋ฒ„์— ๋Œ€ํ•œ๊ฑธ ์ œ์–ดํ•  ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ

์ด๋Ÿฐ์‹์œผ๋กœ ๋œฌ๋‹ค.

์ €๊ธฐ ์•„๋ž˜์— ์žˆ๋Š” ์‘๋‹ต ๋งคํ•‘ ํ…œํ”Œ๋ฆฟ์ด VTL์ด๋ผ๋Š” ์ „์šฉ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ๋ถ€๋ถ„์ด๋‚˜, ์ผ๋‹จ ์—ฌ๊ธฐ์„œ๋Š” ์žˆ๋‹ค๋Š” ๊ฒƒ๋งŒ ์•Œ์•„๋‘”๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ ํ•ญ๋ชฉ์—์„œ๋Š” ๋ณ„๋‹ค๋ฅธ ๋ณด์•ˆ ์ œ์–ด ์—†์ด ๋ฐ”๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ผ๋‹จ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด์„œ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋„ null์ด ๋‚˜์˜จ๋‹ค.

๋Œ€์ถฉ ๊ฐ’์ด ๋‚˜์˜ค๊ฒŒ๋งŒ ํ•ด๋ณด์ž.
๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ DynamoDB๋กœ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ผ๋‹จ ๊ทธ๊ฑธ๋กœ๋งŒ ๊ฐ’์„ ๋„ฃ์–ด์„œ ๊บผ๋‚ด๋ณด๊ฒ ๋‹ค.
๋žŒ๋‹ค๋กœ ๋ถ™์ด๋Š”๊ฑด ๋‚˜์ค‘์— ํ•˜๊ณ ...

๋ฐ์ดํ„ฐ ์›๋ณธ์— ๊ฐ€๋ฉด ๊ฐ’๋“ค๊ณผ ๋งค์นญ๋˜๋Š” ๊ณณ๋“ค์˜ ์„ค์ • ๋ชฉ๋ก์ด ์žˆ๋‹ค.

FooType์„ ์ƒ์„ฑํ• ๋•Œ ์ƒ๊ธด ๊ฑด ์ € FooTypeTable์ด๋ž€ ๋…€์„์ด๋‹ค.
ํด๋ฆญํ•ด์„œ ๋“ค์–ด๊ฐ€๋ฉด ๋Œ€์ถฉ Dynamo ํŽ˜์ด์ง€๊ฐ€ ๋œจ๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ ๊ทธ๊ฑธ ๊นŠ์ด ๋‹ค๋ฃฐ๊ฑด ์•„๋‹ˆ๋‹ˆ ๋Œ€์ถฉ๋งŒ ๋ณด๊ฒ ๋‹ค.

ํ•ญ๋ชฉ์— ๋“ค์–ด๊ฐ€์„œ ํ•ญ๋ชฉ ๋งŒ๋“ค๊ธฐ๋กœ ๋ฆฌ์กธ๋ฒ„์—์„œ ๋ณด๋‚ผ ๊ฐ’๋“ค์„ ์ ๋‹นํžˆ ๋„ฃ์–ด์ค€๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ๋ง์ด๋‹ค.

ํ•ด๋†“๊ณ  ์ €์žฅํ•˜๋ฉด ์ด์ œ ์ž˜ ๊ธ์–ด์˜ฌ ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://dev.classmethod.jp/articles/aws-appsync-re-introduction-2019-korean-ver/