Devops/AWS

[AWS] API Gateway๋ž€? (AWS Lambda ์™€ AWS API Gateway๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ )

yuri lee 2023. 5. 16. 22:04
๋ฐ˜์‘ํ˜•

Intro

์•ˆ๋…•ํ•˜์„ธ์š”. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” AWS API Gateway ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์š”๊ทผ๋ž˜ API Gateway ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•ด๋ด ๊ฐœ๋…์„ ํ•œ๋ฒˆ ๋” ๊ณต๋ถ€ํ•˜๊ณ  ๊ฐ€์•ผ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ์ •๋ฆฌํ•ด๋ด…๋‹ˆ๋‹ค. 

 

API Gateway๋ž€

AWS API Gateway๋Š” AWS์˜ ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ„๋‹จํ•˜๊ฒŒ API (Application Programming Interface)๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

 

API Gateway ๊ธฐ๋Šฅ

ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๊ณ , HTTP ๋˜๋Š” RESTful API๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ, ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ณ€ํ™˜, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

API Gateway ์‚ฌ์šฉ ์ด์œ 

1. ๋‹จ์ˆœํ™”๋œ API ๊ด€๋ฆฌ : API๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐœ๋ฐœ์ž๋Š” API์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ, ์•ก์„ธ์Šค ์ œ์–ด, ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์•˜์Šต๋‹ˆ๋‹ค. 

2. ๋ณด์•ˆ ๋ฐ ์ธ์ฆ : ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•˜์—ฌ API ์—”๋“œํฌ์ธํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

3. ํ™•์žฅ์„ฑ๊ณผ ๊ณ ๊ฐ€์šฉ์„ฑ : ํŠธ๋ž˜ํ”ฝ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ ๋ฆฌ์ „์— ๋ถ„์‚ฐํ•˜์—ฌ ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

4. ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ณ€ํ™˜ : ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐฑ์—”๋“œ ๊ฐ„์— ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ฐ ํ”„๋กœํ† ์ฝœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•œ ์˜ˆ๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ jsonํ˜•์‹์œผ๋กœ ์š”์ฒญํ•˜๊ณ , ๋ฐฑ์—”๋“œ๊ฐ€ xml ํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ์‰ฝ๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

5. ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ตํ•ฉ : AWS Lambda์™€ ๊ฐ•๋ ฅํ•œ ํ†ตํ•ฉ์„ ์ œ๊ณตํ•˜์—ฌ ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‰ฝ๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

6. ๋ชจ๋‹ˆํ„ฐ๋ง๊ณผ ๋กœ๊น… : API์˜ ์„ฑ๋Šฅ, ์‚ฌ์šฉ๋Ÿ‰, ์—๋Ÿฌ ๋“ฑ์— ๋Œ€ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

 

์—”๋“œํฌ์ธํŠธ๋ž€?

API ์—”๋“œํฌ์ธํŠธ๋Š” API(Application Programming Interface)๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋ฒ„๋‚˜ ์›น ์„œ๋น„์Šค์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” URL(Uniform Resource Locator)์ž…๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” ์„œ๋น„์Šค์˜ ํŠน์ • ๊ธฐ๋Šฅ ๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ง€์ ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

API ์—”๋“œํฌ์ธํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ HTTP ๋˜๋Š” HTTPS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ๋Š” ์—”๋“œํฌ์ธํŠธ๋กœ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ๋กœ์™€ ํ•จ๊ป˜ ํŠน์ • ๋„๋ฉ”์ธ ๋˜๋Š” ์„œ๋ธŒ๋„๋ฉ”์ธ๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

 

https://api.example.com/users

์œ„์˜ ์—”๋“œํฌ์ธํŠธ๋Š” /users๋ผ๋Š” ๊ฒฝ๋กœ์— ์‚ฌ์šฉ์ž ๊ด€๋ จ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์—”๋“œํฌ์ธํŠธ๋กœ HTTP GET ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ํ•ด๋‹น API์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์‘๋‹ต์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. API ์—”๋“œํฌ์ธํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ๋ฐ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘์š”ํ•œ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๋Š” API ๋ฌธ์„œ ๋˜๋Š” ์ŠคํŽ™์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž๋Š” ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ API์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

AWS Lambda, AWS API Gateway ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ 

AWS Lambda๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„๋ฆฌ์Šค ์ปดํ“จํŒ… ์„œ๋น„์Šค๋กœ, ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์Šค์ผ€์ผ๋ง ๋ฐ ์ธํ”„๋ผ ๊ด€๋ฆฌ๋ฅผ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Lambda ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Lambda ํ•จ์ˆ˜๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ ์†Œ์Šค(S3, DynamoDB, SNS ๋“ฑ)์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

AWS API Gateway๋ฅผ Lambda ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด, API Gateway๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์„ ๋ฐ›๊ณ , Lambda ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์™€์˜ ํ†ตํ•ฉ๋„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•