White Paper

๋ฐฑ์„œ

07/2019

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‚ฌ์šฉ์‚ฌ๋ก€ - MSA ์˜ ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜ ์ปจ์…‰

์นด์ˆœ ์ธ๋“œ๋ผ์‹œ๋ฆฌ,
์ƒ๋ฌด, WSO2

๋ชฉ์ฐจ

1. ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜

๊ธฐ์—…์˜ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ฑด์„ ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ˆ˜๋ฐฑ ๊ฐ€์ง€์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ œ๊ณตํ•˜๊ณ  ์ด๋Ÿฌํ•œ ์—ญ๋Ÿ‰๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹จ์ผ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์Œ“์ด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ „์‚ฌ์  ์ž์›๊ด€๋ฆฌ ERP, ๊ณ ๊ฐ๊ด€๊ณ„๊ด€๋ฆฌ CRM ๋“ฑ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ๋“ค์ด ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์Šคํ…œ๋“ค์€ ์ˆ˜๋ฐฑ ๊ฐ€์ง€ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ๊ฐ–์ถ˜ ๋ชจ๋…ธ๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌ, ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…, ํ™•์žฅ, ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๋Š” ๊ฒƒ์€ ์•…๋ชฝ๊ณผ๋„ ๊ฐ™์€ ์ผ์ž…๋‹ˆ๋‹ค.

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

Monolithic Architecture

ํ‘œ 1: ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜

๊ทธ๋ฆผ 1์€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฆฌํ…Œ์ผ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋น„์Šค๋“ค์€ ๋™์ผํ•œ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ๋Ÿฐํƒ€์ž„(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ๊ฐ™์€) ์œผ๋กœ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์ง•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ณต์žกํ•˜๊ณ , ๋‹จ์ผ ์œ ๋‹›์œผ๋กœ ์„ค๊ณ„๋˜๊ณ , ๊ฐœ๋ฐœ๋˜๊ณ , ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€๋ถ„์  ์—…๋ฐ์ดํŠธ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฏผ์ฒฉํ•œ ๊ฐœ๋ฐœ ๋ฐ ์ „๋‹ฌ ๋ฐฉ๋ฒ•์„ ์‹คํ–‰ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ ‘๊ทผ๋ฐฉ๋ฒ•์— ์•ฝ๊ฐ„์˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋…ธ๋ฆฌ์Šค๋Š” ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํ™•์žฅ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ถฉ๋Œํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ํฌํ•จํ•˜์—ฌ ํ™•์žฅ๋˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. (์˜ˆ, ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋Š” ๋” ๋งŽ์€ CPU๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ฐ˜๋ฉด ๋˜ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋Š” ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”๊ตฌํ•  ๋•Œ) ํ•˜๋‚˜์˜ ๋ถˆ์•ˆ์ •ํ•œ ์„œ๋น„์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด๋ฅผ ๋‹ค์šด ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ๊ณผ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ˜์‹ ํ•˜๊ฑฐ๋‚˜ ๋„์ž…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋“ค๋กœ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ ์•Œ์•„ ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

2. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

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

MSA์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ •์˜๋“ค์„ ๋ณด๋ฉด, ๋ชจ๋…ธ๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋“ค์€ ์ผ๋ จ์˜ ๋…๋ฆฝ๋œ ์„œ๋น„์Šค๋“ค๋กœ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ถ˜ ์•„ํ‚คํ…์ฒ˜์  ์ปจ์…‰์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋ชจ๋…ธ๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋“ค์„ ๋…๋ฆฝ๋œ ์„œ๋น„์Šค๋“ค๋กœ ๋‹จ์ˆœํžˆ ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์— ๊ทธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋…ธ๋ฆฌ์Šค์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋ณด๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์š”๊ตฌ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค. ์ฆ‰, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ ์šฉํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰๋“ค์€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๊ณ , ์น˜๋ฐ€ํ•˜๊ณ , ์ถฉ๋ถ„ํžˆ ๊ฐ–์ถฐ์ง„ (๋งˆ์ดํฌ๋กœ) ์„œ๋น„์Šค ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ๊ธฐ์ˆ ๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋ ‡๋‹ค๊ณ  ํ• ์ง€๋ผ๋„ ๊ฐ ์„œ๋น„์Šค๋Š” ๋งค์šฐ ๊ตฌ์ฒด์ ์ด๊ณ  ์ œํ•œ์ ์ธ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์œ„์— ์†Œ๊ฐœํ•œ ์˜จ๋ผ์ธ ๋ฆฌํ…Œ์ผ ์‹œ์Šคํ…œ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ๊ทธ๋ฆผ 2์— ๋ฌ˜์‚ฌ๋œ MSA๋กœ ์‹คํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณด๋‹ค์‹œํ”ผ, ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์กฐ๊ฑด์„ ๊ธฐ๋ฐ˜์œผ๋กœ, ๊ธฐ์กด์— ๋ชจ๋…ธ๋ฆฌ์Šค์— ์กด์žฌํ•˜๋˜ ์˜ค๋ฆฌ์ง€๋„ ์„œ๋น„์Šค๋“ค์— ์ถ”๊ฐ€๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Š” ๋‹จ์ˆœํžˆ ์„œ๋น„์Šค๋ฅผ ๋”์šฑ ๋ณต์žกํ•œ ๊ทธ๋ผ์šด๋“œ์œ„์— ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ ์ด์ƒ์ž„์ด ๋ช…๋ฐฑํ•ฉ๋‹ˆ๋‹ค.

Microservice architecture

ํ‘œ 2: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ฃผ์š” ์•„ํ‚คํ…์ฒ˜ ์›๋ฆฌ๋ฅผ ์•Œ์•„๋ณด๊ณ , ์‹ค์ œ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ค‘์ ์ ์œผ๋กœ ์•Œ์•„๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

3. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋””์ž์ธํ•˜๊ธฐ: ์‚ฌ์ด์ฆˆ, ๋ฒ”์œ„, ์—ญ๋Ÿ‰

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ผ ํ•˜๋ฉด ๋‹ค์Œ์˜ ๋‘˜ ์ค‘ ํ•œ๊ฐ€์ง€๋ฅผ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ž์‹ ๋งŒ์˜ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ๊ตฌ์ถ• ํ•˜๋˜์ง€, ๊ธฐ์กด์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/์„œ๋น„์Šค๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ์ชฝ์ด๋“  ๊ฐ„์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ทœ๋ชจ, ๋ฒ”์œ„, ์—ญ๋Ÿ‰์„ ์ ์ ˆํžˆ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. MSA๋ฅผ ์‹ค์ œ ์‹คํ–‰ํ•  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋ถ€๋”ชํžˆ๊ฒŒ ๋  ๊ฐ€์žฅ ์–ด๋ ค์šด ์ผ์ž…๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹คํ–‰ ์ƒ์˜ ์šฐ๋ ค ๋ฐ ์˜คํ•ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ๋ผ์ธ/ํŒ€ ์‚ฌ์ด์ฆˆ๋Š” ํ˜•ํŽธ์—†๋Š” ๋งคํŠธ๋ฆญ์Šค์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค์˜ ์‹คํ–‰์„ ์œ„ํ•œ ์ฝ”๋“œ ๋ผ์ธ ํ˜น์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ํŒ€ ์‚ฌ์ด์ฆˆ์˜ ์ˆ˜์— ๋”ฐ๋ผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์—๋Š” ์—ฌ๋Ÿฌ ๋…ผ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ. ํ”ผ์ž ๋‘ํŒ์˜ ๋ฒ•์น™4 (two-pizza team) ) ๊ทธ๋Ÿฌ๋‚˜ ๋” ์ ์€ ์ฝ”๋“œ์™€ ํ”ผ์ž ๋‘ํŒ์˜ ๋ฒ•์น™์œผ๋กœ MSA ์›๋ฆฌ์— ์œ„๋ฐ˜๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ๋งค์šฐ ๋น„์‹ค์šฉ์ ์ด๋ฉฐ ํ˜•ํŽธ์—†๋Š” ๋งคํŠธ๋ฆญ์Šค๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.
  • โ€˜๋งˆ์ดํฌ๋กœโ€™๋Š” ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๋“ค์€ ์„œ๋น„์Šค๋ฅผ ๊ฐ€๋Šฅํ•œ ์†Œ๊ทœ๋ชจ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์˜คํ•ดํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ํ•ด์„์ž…๋‹ˆ๋‹ค.
  • SOA/์›น์„œ๋น„์Šค ์„œ๋น„์Šค๋Š” ์ข…์ข… ๋‹ค์–‘ํ•œ ๋‹จ์œ„๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ ์€ ์—ญ๋Ÿ‰์„ ๊ฐ€์ง„ ์„œ๋น„์Šค๋„ ์žˆ๊ณ  ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค๋ฅผ ๊ฐ€์ง„ ์„œ๋น„์Šค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ฑฐ๋‚˜ ์ด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ฆฌ๋ธŒ๋žœ๋”ฉ ํ•œ๋‹ค๊ณ  MSA๊ฐ€ ๊ฐ€์ง„ ์žฅ์ ์„ ๊ฐ€์งˆ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด MSA์—์„œ ์„œ๋น„์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์ ˆํ•˜๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ• ๊นŒ์š”?

3.1 ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„ค๊ณ„ ๊ฐ€์ด๋“œ๋ผ์ธ

  • ๋‹จ์ผ์ฑ…์ž„์›์น™ (Single Responsibility Principle, SRP): ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์„ ์ œํ•œ์ ์ด๊ณ  ์ง‘์ค‘์ ์œผ๋กœ ์„ค์ •ํ•ด์•ผ ์„œ๋น„์Šค ๊ฐœ๋ฐœ ๋ฐ ์ „๋‹ฌ์˜ ๋ฏผ์ฒฉ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š”๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  • ์„ค๊ณ„ ๋‹จ๊ณ„์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์˜์—ญ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰๊ณผ ์ผ์น˜์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋„๋ฉ”์ธ ์ฃผ๋„ ์„ค๊ณ„ (Domain-Driven-Design) ์—์„œ ๋ฐ”์šด๋””๋“œ ์ปจํ…์ŠคํŠธ (bounded context)๋กœ ๋ถ€๋ฆ„).
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์„ค๊ณ„ ์‹œ ์„œ๋น„์Šค์˜ ๊ฐœ๋ฐœ๊ณผ ์‹คํ–‰์ด ๋ฏผ์ฒฉํ•˜๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์ด๋ฃจ์–ด ์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋ฅผ ๋”์šฑ ์ž‘๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์˜์—ญ์— ์ง‘์ค‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ดˆ๊ธฐ์—๋Š” ๋น„๊ต์  ๊ด‘๋ฒ”์œ„ํ•œ ์„œ๋น„์Šค ์˜์—ญ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ํ›„ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ (๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ) ๋”์šฑ ์ž‘์€ ๊ทœ๋ชจ๋กœ ๋ฆฌํŒฉํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ…Œ์ผ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ณด์‹œ๋ฉด, ๋ชจ๋…ธ๋ฆฌ์Šค์˜ ๊ธฐ๋Šฅ์„ 4๊ฐœ์˜ ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ โ€˜์ธ๋ฒคํ† ๋ฆฌโ€™, โ€˜์–ด์นด์šดํŒ…โ€™, โ€˜๋ฐฐ์†กโ€™, โ€˜์Šคํ† ์–ดโ€™๋กœ ๊ตฌ๋ถ„ํ•œ ๊ฒƒ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œํ•œ์ ์ด์ง€๋งŒ ์ง‘์ค‘๋œ ๋น„์ฆˆ๋‹ˆ์Šค ์˜์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด, ๊ฐ์ž ์™„์ „ํžˆ ๋…๋ฆฝ๋˜์–ด ์žˆ๊ณ , ๊ฐœ๋ฐœ๊ณผ ์‹คํ–‰์— ์žˆ์–ด ๋ฏผ์ฒฉ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ

๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ/๊ตฌ์„ฑ์š”์†Œ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์€ ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ˜น์€ ์–ธ์–ด ์ˆ˜์ค€์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. SOA์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ํ›จ์”ฌ ๋” ๋Š์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋œ ์›น ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์œผ๋กœ ์ด์ „๋˜์—ˆ๊ณ , HTTP์™€ JMS์™€ ๊ฐ™์€ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ ์œ„์˜ SOAP์— ์ฃผ๋กœ ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

4.1 ๋™๊ธฐํ™”๋œ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ -REST, gRPC, GraphQL, Thrift

MSA์—์„œ ๋™๊ธฐํ™”๋œ ๋ฉ”์‹œ์ง€ ์ „์†ก ๊ธฐ๋Šฅ์€ (ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋น„์Šค๋กœ๋ถ€ํ„ฐ ์‹ ์†ํ•œ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜๊ณ , ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.) ๋ฆฌ์†Œ์Šค์— ๊ธฐ๋ฐ˜ํ•œ HTTP ๋ฆฌํ€˜์ŠคํŠธ(์š”์ฒญ)-๋ฆฌ์Šคํฐ์Šค(์‘๋‹ต)๋กœ ๋‹จ์ˆœ ๋ฉ”์‹œ์ง€ ์ „์†ก ์Šคํƒ€์ผ๋กœ ์‹คํ–‰๋จ์„ ์ฆ๋ช…ํ•œREST (Representation State Transfer)๋ฅผ ๋งŒ์žฅ์ผ์น˜๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Using REST interfaces to expose microservices

ํ‘œ 3: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋…ธ์ถœ์„ ์œ„ํ•œ REST ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ

gRPC ์—ญ์‹œ RESTful ์„œ๋น„์Šค์˜ ๋Œ€์•ˆ์ฑ…์ด์ž ์ธํ„ฐ-ํ”„๋กœ์„ธ์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ธฐ์ˆ ๋กœ ๊ฝค ์ธ๊ธฐ๊ฐ€ ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•˜๋Š” ๊ฒƒ๋งŒํผ ์‰ฝ๊ฒŒ ๋ถ„์‚ฐ๋œ ์ด์ข… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐ, ํ˜ธ์ถœ, ์šด์˜, ๋””๋ฒ„๊ทธ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ค๋‹ˆ๋‹ค. REST์™€๋Š” ๋‹ฌ๋ฆฌ, ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ ์–ธ์–ด (Interface Definition Language, IDL)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ gRPC์˜ ํ”„๋กœํ† ์ฝœ ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์•ฝ๋ฅผ ์™„์ „ํžˆ ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (Go, Java, Node ๋“ฑ)๋ฅผ ์œ„ํ•œ ์„œ๋น„์Šค ๋ฐ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GraphQL ์—ญ์‹œ ๊ณ ์ •์ ์ธ ์„œ๋น„์Šค ๊ณ„์•ฝ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— ๊ฝค ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. GraphQL์€ API๋ฅผ ์œ„ํ•œ ์งˆ์˜ ์–ธ์–ด์ด์ž, ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋กœ ์งˆ์˜์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•œ ๋Ÿฌ๋‹ ํƒ€์ž„์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜๊ณผ๋Š” ๋‹ค๋ฅด๋ฉฐ, ๊ธฐ์ดˆ ์ˆ˜์ค€์—์„œ๋ถ€ํ„ฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ณ , ์–ด๋– ํ•œ ๋ฐฉ์‹์œผ๋กœ, ์–ด๋– ํ•œ ํ˜•์‹์œผ๋กœ ์ œ์‹œ๋  ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Thrift (์“ฐ๋ฆฌํ”„ํŠธ) ๋Š” REST/HTTP ๋™๊ธฐํ™” ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์˜ ๋Œ€์•ˆ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. (๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.)

๋™๊ธฐํ™” ์š”์ฒญ-์‘๋‹ต ์Šคํƒ€์ผ ๋ฉ”์‹œ์ง€๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒํ•˜๊ณ  ์™ธํ–ฅ์  API์™€ ๊ฐ™์ด ๋ฆฌ์–ผ ํƒ€์ž„ ํ”„๋กœ์„ธ์‹ฑ์„ ์›ํ•˜๋Š” ์„œ๋น„์Šค ๋ฐ ํด๋ผ์ด์–ธํŠธ์— ๋”์šฑ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

4.2 ๋น„๋™๊ธฐํ™” ๋ฉ”์‹œ์ง€ โ€“ Kafka, NATS, AMQP, STOMP, MQTT

์„œ๋น„์Šค ๊ฐ„ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์€ ์ด๋ฒคํŠธ ์ฃผ๋„ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐํ™” ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์— ์ฆ‰๊ฐ์ ์ธ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์•„์˜ˆ ์‘๋‹ต์„ ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์œ„ํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” NATS, Kafka, AMQP, STOMP, MQTT์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฉ”์‹œ์ง€ ํ”„๋กœํ† ์ฝœ๊ณผ๋Š” ๋‹ฌ๋ฆฌ, Kafka์™€ NATS๋Š” ๋‹จ์ˆœํ•˜๊ณ  (dumb) ๋ถ„์‚ฐ๋œ ๋ฉ”์‹œ์ง€ ์ธํ”„๋ผ๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์ถ•์— ๋”์šฑ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๋Š” ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง€์ง€๋งŒ, ๋ธŒ๋กœ์ปค๋Š” ์•„๋ฌด๋Ÿฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง€์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4.3 ๋ฉ”์‹œ์ง€ ํฌ๋งท โ€“ JSON, XML, Thrist, ProtoBuf, Avro

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ฉ”์‹œ์ง€ ํฌ๋งท์„ ์ •ํ•˜๋Š” ์ผ๋„ ๋˜ ๋‹ค๋ฅธ ์ค‘์š” ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ๋ฐฉ์‹์˜ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณต์žกํ•œ ์ด์ง„์ˆ˜ ํฌ๋งท์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ฉด, SOA โ€“ ๊ทธ๋ฆฌ๊ณ  ์›น๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ณต์žกํ•œ ๋ฉ”์‹œ์ง€ ํฌ๋งท (SOAP) ๋ฐ ์Šคํ‚ค๋งˆ (XSD)๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” HTTP REST API๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ JSON, XML๊ณผ ๊ฐ™์ด ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ํฌ๋งท์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„์ˆ˜ ๋ฉ”์‹œ์ง€ ํฌ๋งท์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ (ํ…์ŠคํŠธ ๋ฉ”์‹œ์ง€๊ฐ€ ์žฅํ™ฉํ•  ๊ฒฝ์šฐ), ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ด์ง„์ˆ˜ ์“ฐ๋ฆฌํ”„ํŠธ, ProtoBuf ํ˜น์€ Avro์™€ ๊ฐ™์€ ์ด์ง„์ˆ˜ ๋ฉ”์‹œ์ง€ ํฌ๋งท์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.4 ์„œ๋น„์Šค ๊ณ„์•ฝ โ€“ ์„œ๋น„์Šค ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ โ€“ ์˜คํ”ˆ API/์Šค์›จ๊ฑฐ, gRPC IDL, GraphQR ์Šคํ‚ค๋งˆ, ์“ฐ๋ฆฌํ”„ํŠธ IDL

๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์„œ๋น„์Šค๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์„œ๋น„์Šค ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๊ณ  ๋ฐœํ–‰ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์šฐ๋ฆฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์„ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฑฐ์˜ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. SOA/์›น ์„œ๋น„์Šค ์„ธ์ƒ์—์„œ๋Š” WSDL์„ ์„œ๋น„์Šค ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ WSDL์€ REST๋ฅผ ์ผ๋“ฑ์‹œ๋ฏผ์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ณ„์•ฝ ์ •์˜๋ฅผ ์œ„ํ•œ ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค.

REST ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ ์œ„์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋™์ผํ•œ REST API ์ •์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค ๊ณ„์•ฝ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ์Šค์›จ๊ฑฐ๋‚˜ RAML๊ณผ ๊ฐ™์€ ํ‘œ์ค€ REST API ์ •์˜ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

HTTP/REST์— ๊ธฐ๋ฐ˜ํ•˜์ง€ ์•Š๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์‹คํ–‰์„ ์œ„ํ•ด ์˜ˆ๋ฅผ ๋“ค์–ด, gRPC ๋ฐ ์“ฐ๋ฆฌํ”„ํŠธ์˜ ์‹คํ–‰์„ ์œ„ํ•ด ํ”„๋กœํ† ์ฝœ ๋ ˆ๋ฒจ IDL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GraphQL์˜ ๊ฒฝ์šฐ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ GraphQL-๊ธฐ๋ฐ˜ API๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” GraphQL์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

๋ชจ๋…ธ๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์–‘ํ•œ ์—ญ๋Ÿ‰์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ผ ์ค‘์‹ฌ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Monolithic application uses a centralized database to implement all its features

ํ‘œ 4: ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ง‘์ค‘ํ™” ๋œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

MSA์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰๋“ค์€ ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ผํ•œ ์ง‘์ค‘ํ™” ๋œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ์„œ๋น„์Šค ๊ฐ„ ๋Š์Šจํ•œ ์ปคํ”Œ๋ง์„ ๋ณด์žฅํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๊ฐ€ ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์ด ๊ณ ์žฅ ๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ) ๋”ฐ๋ผ์„œ ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ž์‹ ๋งŒ์˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋ณด์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Microservices have its own private database and they can't directly access the database owned by other microservices

ํ‘œ 5: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ž์‹ ์˜ ์ „์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด์œ ํ•˜๊ณ , ํƒ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋ณด์œ ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ง์ ‘ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

MSA์—์„œ ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์— ์žˆ์–ด์„œ ์ค‘์š”ํ•œ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ œ๊ณตํ•˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์˜ ์ „์šฉ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ž์‹ ์˜ ์ „์šฉ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—๋งŒ ์—‘์„ธ์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํƒ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—๋Š” ์—‘์„ธ์Šค ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ์ƒํ™ฉ์˜ ๊ฒฝ์šฐ, ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์„ ์œ„ํ•ด ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ, ํƒ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋Š” ์ž์‹ ์˜ ์„œ๋น„์Šค API๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ง์ ‘ ์—‘์„ธ์Šค๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)

๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ์™„์ „ํžˆ ๋ถ„์‚ฐ๋ถ„๋ฆฌ๋œ(Decoupled)๋œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ตฌ์ถ• ๋ฐ ์ด์งˆ์  ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ธฐ์ˆ ์˜ ์„ ํƒ์ด ์ž์œ ๋กญ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (SQL ํ˜น์€ NoSQL ๋ฐ ๊ฐ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์ƒ์ดํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ). ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๊ฑธ์ณ ๋™๊ธฐํ™”๋œ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋‹ค์ˆ˜์˜ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ•˜๋‚˜์˜ ์„œ๋น„์ŠคAPI๋ฅผ ํ†ตํ•ด ์š”๊ตฌ๋˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์„œ๋น„์Šค๊ฐ€ ๋‹ค์ˆ˜์˜ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ตฌ์„ฑ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ๋‹ค์–‘ํ•œ ์‹ค์ฒด๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ๊ฐ„ ์ด๋ฒคํŠธ-๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ์™€ ๊ด€๋ จ CQRS (Command Query Responsibility Segregation)์™€ ๊ฐ™์€ ๊ด€๋ จ ํŒจํ„ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ์ €์„œ์—์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ธฐ์ˆ  ๋ฐ ํŒจํ„ด์— ๋Œ€ํ•œ ๋”์šฑ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜ ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6. ๊ฑฐ๋ฒ„๋„Œ์Šค

IT ๋ฌธ๋งฅ์—์„œ โ€˜๊ฑฐ๋ฒ„๋„Œ์Šคโ€™๋Š” ๊ธฐ์—…์ด ๊ธฐ์—…์˜ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด IT๋ฅผ ํšจ๊ณผ์ ์ด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. SOA ๊ฑฐ๋ฒ„๋„Œ์Šค๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค์˜ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ๋ผ์ธ์„ ์ œ์‹œํ•˜๊ณ , ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜๊ณ  ๊ฐœ๋ฐœ๋˜์–ด์•ผ ํ•˜๋Š”์ง€, ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋“ค์ด ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•จ์— ๋”ฐ๋ผ ์–ด๋–ป๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ œ๊ณต์ž์™€ ์‚ฌ์šฉ์ž ์‚ฌ์ด์˜ ํ•ฉ์˜๋ฅผ ๋„์ถœํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ”์™€ ์ œ๊ณต์ž๋“ค์ด ์ œ๊ณตํ•  ์˜๋ฌด๊ฐ€ ์žˆ๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•ด์„œ ์•Œ๋ ค ์ค๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ์ข…๋ฅ˜์˜ SOA ๊ฑฐ๋ฒ„๋„Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ค๊ณ„-์‹œ๊ฐ„ ๊ฑฐ๋ฒ„๋„Œ์Šค โ€“ ์„œ๋น„์Šค ๊ตฌ์ถ•, ์„ค๊ณ„ ์„œ๋น„์Šค ์ •์ฑ… ์‹คํ–‰ ์ •์˜ ๋ฐ ๊ด€๋ฆฌ
  • ๋Ÿฐํƒ€์ž„ ๊ฑฐ๋ฒ„๋„Œ์Šค โ€“ ์„œ๋น„์Šค ์‹คํ–‰ ์‹œ ์ •์ฑ…์„ ์ง‘ํ–‰ํ•˜๋Š” ๋Šฅ๋ ฅ

๊ทธ๋ ‡๋‹ค๋ฉด, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฌธ๋งฅ์—์„œ ๊ฑฐ๋ฒ„๋„Œ์Šค๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฑฐ๋ฒ„๋„Œ์Šค๋ฅผ ์™„์ „ํžˆ ๋ถ„์‚ฐ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ํฌ์ง€์…”๋‹ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์ง€๋งŒ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์—ฌ๋Ÿฌ ๋ฉด์„ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฑฐ๋ฒ„๋„Œ์Šค์—๋Š” ์ง‘์ค‘ํ™” ๋œ ๋ฉด๊ณผ ๋ถ„์‚ฐํ™” ๋œ ๋ฉด์ด ๋ชจ๋‘ ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์ด ๋ถ„๋ช…ํ•ด ์ง‘๋‹ˆ๋‹ค. MSA์—์„œ๋Š” ๊ฑฐ๋ฒ„๋„Œ์Šค์˜ ๋‹ค์–‘ํ•œ ๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ๊ฐœ๋ฐœ ๋ฐ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ
  • ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฐ ๊ฒ€์ƒ‰
  • ๊ด€์ธก๊ฐ€๋Šฅ์„ฑ
  • ์„œ๋น„์Šค ๋ฐ API ๊ด€๋ฆฌ

๊ฐœ๋ฐœ ์ˆ˜๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ์™€ ๊ด€๋ จํ•˜์—ฌ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ๊ณผ ํ”Œ๋žซํผ์„ ๊ฐ€์ง„ ์™„์ „ํžˆ ๋…๋ฆฝ๋˜๊ณ  ๋ถ„๋ฆฌ๋œ ์„œ๋น„์Šค๋กœ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์„œ๋น„์Šค์˜ ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ณตํ†ต๋œ ๊ธฐ์ค€์„ ์ œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ถ„์‚ฐํ™” ๋œ ๊ฑฐ๋ฒ„๋„Œ์Šค ์—ญ๋Ÿ‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์„œ๋น„์Šค์˜ ์„ค๊ณ„ ๋ฐ ์‹คํ–‰๊ณผ ๊ด€๋ จ๋œ ์‚ฌํ•ญ์„ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • MSA๋Š” ๊ณตํ†ต/์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋“ค์˜ ๊ณต์œ ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • ์“ฐ๋กœํŒ…, ๋ชจ๋‹ˆํ„ฐ๋ง, ๊ณตํ†ต ๋ณด์•ˆ์š”๊ฑด, ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๋“ฑ๊ณผ ๊ฐ™์€ ๋Ÿฐํƒ€์ž„ ๊ฑฐ๋ฒ„๋„Œ์Šค์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด๋“ค์€ ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค, ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ์š”์†Œ SLAs์—์„œ ์‹คํ˜„๋ฉ๋‹ˆ๋‹ค. (์ข…์ข…, API-๊ฒŒ์ดํŠธ์›จ์ด ์ˆ˜์ค€)

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

7. ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋ฐ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

MSA์—์„œ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ˆ˜๋Š” ๊ฝค ๋งŽ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์„ฑ๊ฒฉ์ƒ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰์ด ๋งค์šฐ ๋น ๋ฅด๊ณ  ๋ฏผ์ฒฉํ•˜๊ฒŒ ์ด๋ฃจ์–ด ์ง€๋ฏ€๋กœ, ๋กœ์ผ€์ด์…˜์ด ๋งค์šฐ ์—ญ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋Ÿฐํƒ€์ž„ ๋™์•ˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋กœ์ผ€์ด์…˜์„ ์ฐพ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

7.1 ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ

์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋“ค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค. (์ด๋Š” ์‹ค์ œ ๋กœ์ผ€์ด์…˜, ํ˜ธ์ŠคํŠธ ํฌํŠธ ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.) ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ธ์Šคํ„ด์Šค๋“ค์€ ์Šคํƒ€ํŠธ์—… ์‹œ ๋“ฑ๋ก๋˜๋ฉฐ, ์…ง ๋‹ค์šด ์‹œ ๋“ฑ๋ก ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋“ค์˜ ๋กœ์ผ€์ด์…˜์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7.2 ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๋กœ์ผ€์ด์…˜์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ๊ฒ€์ƒ‰ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ณด์œ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€์˜ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด ๋‘๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด์„œ ๋”์šฑ ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:

7.2.1 ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ

์ด์™€ ๊ฐ™์€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์—์„œ, ํด๋ผ์ด์–ธํŠธ ํ˜น์€ API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์š”์ฒญํ•˜์—ฌ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์˜ ๋กœ์ผ€์ด์…˜์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

Client-side discovery

ํ‘œ 6: ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ

ํด๋ผ์ด์–ธํŠธ ํ˜น์€ API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๋กœ์ง์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

7.2.2 ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ

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

Server-side discovery

ํ‘œ 7: ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„ ์œ„ํ•ดKubernetes ์™€ ๊ฐ™์€ ์‹คํ–‰ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes๋Š” ๋นŒํŠธ-์ธ ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์™€ ๋””์Šค์ปค๋ฒ„๋ฆฌ ์—ญ๋Ÿ‰์„ ์ œ๊ณต ํ•˜๋ฉฐ, ๋…ผ๋ฆฌ๋ช…์„ ์‚ฌ์šฉํ•ด ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ฉฐ, Kubernetes๋Š” ๋…ผ๋ฆฌ๋ช…์„ ์‹ค์ œ IP์™€ ํฌํŠธ๋กœ ํ’€์–ด์ค๋‹ˆ๋‹ค.

8. ๋ฐฐํฌ

MSA์— ์žˆ์–ด์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ฐฐํฌ๋Š” ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ค‘์š”ํ•œ ์š”๊ฑด์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค:

  • ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ/๋ฐฐํฌ ์ทจ์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ
  • ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ (ํ•œ ์„œ๋น„์Šค๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๋“ค ๋ณด๋‹ค ๋” ๋งŽ์€ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ)
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์‹ ์†ํ•œ ๋ฐฐํฌ๋Šฅ๋ ฅ
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์žฅ์• ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์–ด๋– ํ•œ ์˜ํ–ฅ๋„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•จ

๋„์ปค (Docker, ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์ž ๋ฐ ์‹œ์Šคํ…œ ์–ด๋“œ๋ฏผ์ด ์ž๋ฆฝ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ์†Œ์Šค ์—”์ง„)๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋Š” ํ•œํŽธ ์œ„์˜ ์š”๊ฑด์„ ์ถฉ์กฑํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ด€๋ จ๋œ ์ค‘์š” ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ (๋„์ปค) ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋กœ ํŒจํ‚ค์ง•
  • ๊ฐ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌ
  • ์ปจํ…Œ์ด๋„ˆ ์ธ์Šคํ„ด์Šค์˜ ์ˆ˜์— ๋”ฐ๋ผ ํ™•์žฅ
  • ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์šฉ ์‹œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ตฌ์ถ•, ๋ฐฐํฌ ๋ฐ ๊ฐœ์‹œ๊ฐ€ ๋”์šฑ ๋นจ๋ผ ์ง (์ผ๋ฐ˜ VM๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ„)

Kubernetes ๋Š” ๋ฆฌ๋ˆ…์Šค ์ปจํ…Œ์ด๋„ˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋‹จ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ๊ด€๋ฆฌ ์šฉ์ดํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ๋„์ปค์˜ ์—ญ๋Ÿ‰์„ ํ™•์žฅ ์‹œ์ผœ์ฃผ๋ฉฐ, ์ด์™€ ๋”๋ถˆ์–ด, ๋‹ค์ˆ˜์˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ด€๋ฆฌ ๋ฐ ์šด์šฉํ•˜๊ณ , ์ปจํ…Œ์ด๋„ˆ์˜ ๊ณต๋™ ๋กœ์ผ€์ด์…˜, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ, ์žฌ์ƒ๊ด€๋ฆฌ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์ด ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ๋“ค์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋งฅ๋ฝ์—์„œ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด Kubernetes (๋„์ปค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ) ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ ‘๊ทผ๋ฒ•์ด๊ณ , ํŠนํžˆ ๋Œ€๊ทœ๋ชจ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐฐํฌ์— ์žˆ์–ด์„œ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Building and deploying microservices as containers

ํ‘œ 8: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ปจํ…Œ์ด๋„ˆ๋กœ์จ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ธฐ

ํ‘œ 8์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋ฆฌํ…Œ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์–ด๋–ป๊ฒŒ ๋ฐฐํฌ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐฐํฌ๋˜๋ฉฐ, ํ˜ธ์ŠคํŠธ๋‹น ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

9. ๋ณด์•ˆ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๋ณด์•ˆ์€ ์‹ค์ œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ์‹œ ๊ณตํ†ต์ ์œผ๋กœ ์š”๊ตฌ๋˜๋Š” ์š”๊ฑด์ž…๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ณด์•ˆ์— ๋Œ€ํ•ด์„œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€์—์„œ ๋ณดํ†ต ์–ด๋–ป๊ฒŒ ๋ณด์•ˆ์„ ์‹คํ–‰ํ•˜๋Š”์ง€ ๊ฐ„๋žตํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ, ๋ณด์•ˆ์€ โ€˜ํ˜ธ์ถœ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€โ€™, โ€˜ํ˜ธ์ถœ์ž๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ์ง€โ€™, โ€˜์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ์ „๋‹ฌํ• ์ง€โ€™๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์ด๋Š” ์ฃผ๋กœ ๊ณตํ†ต์˜ ๋ณด์•ˆ ๊ตฌ์„ฑ์š”์†Œ์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์š”์ฒญ ์ฒ˜๋ฆฌ ๊ณผ์ • ์ค‘ ์‹œ์ž‘ ๋‹จ๊ณ„์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ตฌ์„ฑ์š”์†Œ๋Š” ๊ธฐ์ €์˜ ์‚ฌ์šฉ์ž ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ๋œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด, ์ด๋Ÿฌํ•œ ํŒจํ„ด์„ MSA๋กœ ์ง์ ‘ ํ•ด์„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์š”๊ตฌ๋˜๋Š” ์ •๋ณด๋ฅผ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์•™ํ™” ๋˜๊ณ  / ๊ณต์œ ๋œ ์‚ฌ์šฉ์ž ์ €์žฅ์†Œ์™€ ์˜์‚ฌ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ ์‹คํ–‰๋˜๋Š” ๋ณด์•ˆ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ด์™€ ๊ฐ™์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋งค์šฐ ๋”ฐ๋ถ„ํ•œ ์ ‘๊ทผ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋Œ€์‹ ์— ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ OAuth 2.0 ๋ฐ OpenID Connect (OIDC)์™€ ๊ฐ™์€ ๋” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” API-๋ณด์•ˆ ํ‘œ์ค€์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ๋”์šฑ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์ด์ „์— ๊ฐ ํ‘œ์ค€์˜ ๋ชฉ์ ์— ๋Œ€ํ•ด์„œ ์š”์•ฝํ•ด ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • OAuth 2.5์€ ์ ‘๊ทผ์œ„์ž„ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ ์„œ๋ฒ„๋กœ ์ธ์ฆํ•˜๊ณ , Opaque Token์„ ์–ป๋Š”๋ฐ ์ด๋Š” โ€˜์ ‘๊ทผ ํ† ํฐโ€™์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ‘๊ทผ ํ† ํฐ์€ ์‚ฌ์šฉ์ž ํ˜น์€ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •๋ณด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ธ์ฆ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ โ€˜๋ฐ”์ด-๋ ˆํผ๋Ÿฐ์Šค ํ† ํฐโ€™์œผ๋กœ๋„ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ๊ณต๊ณต ๋„คํŠธ์›Œํฌ ํ˜น์€ ์ธํ„ฐ๋„ท์—์„œ๋„ ์‚ฌ์šฉ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • OIDC๋Š” OAuth 2.0๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ–‰๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ ‘๊ทผ ํ† ํฐ์— ๋”ํ•˜์—ฌ ์ธ์ฆ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ID ํ† ํฐ์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ข…์ข… ์ธ์ฆ ์„œ๋ฒ„์— ์˜ํ•ด ์„œ๋ช…๋œ JSON Web Token (JWT)์— ์˜ํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ธ์ฆ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— ์‹ ๋ขฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. JWT๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ , ์ธํ„ฐ๋„ท ๋„คํŠธ์›Œํฌ ์™ธ์˜ ์‚ฌ์šฉ์ด ์•ˆ์ „ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋”ฐ๋ผ์„œ โ€˜๋ฐ”์ด-๋ฐธ๋ฅ˜ ํ† ํฐโ€™์œผ๋กœ ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Microservice security with OAuth 2.0 and OpenID Connect

ํ‘œ 9: OAuth 2.0๊ณผ OpenID Connect๋ฅผ ํ†ตํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ณด์•ˆ

ํ‘œ 9์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ณด์•ˆ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ์˜ ์ฃผ์š” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ์€ OAuth 2.0๊ณผ OIDC ์„œ๋ฒ„ (์ธ์ฆ ์„œ๋ฒ„)์— ๋งก๊น๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๊ถŒ์ด ์žˆ๋‹ค๋ฉด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์„ฑ๊ณต์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ๋‹จ์ผ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, API ๊ฒŒ์ดํŠธ ์›จ์ด ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.
  • ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜์—ฌ ์ ‘๊ทผ ํ† ํฐ (๋ฐ”์ด-๋ ˆํผ๋Ÿฐ์Šค ํ† ํฐ)์„ ํš๋“ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ํ›„ ์š”์ฒญ์‚ฌํ•ญ๊ณผ ํ•จ๊ป˜ API ๊ฒŒ์ดํŠธ ์›จ์ด์— ๋Œ€ํ•œ ์ ‘๊ทผ ํ† ํฐ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒŒ์ดํŠธ ์›จ์ด์—์„œ์˜ ํ† ํฐ ํ•ด์„ โ€“ API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ์ ‘๊ทผ ํ† ํฐ์„ ์ถ”์ถœํ•˜์—ฌ JWT๋ฅผ ํšŒ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค. (๋ฐธ๋ฅ˜-ํ† ํฐ)
  • ๊ฒŒ์ดํŠธ ์›จ์ด๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ ˆ์ด์–ด์— ๋Œ€ํ•œ ์š”์ฒญ๊ณผ ํ•จ๊ป˜ JWT๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • JWT๋Š” ์‚ฌ์šฉ์ž ์„ธ์…˜๊ณผ ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ํ•„์š”ํ•œ ์ •๋ณด๋Š” ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค๋Š” ํ•˜๋‚˜์˜ JWT๋ฅผ ์ดํ•ดํ•˜์—ฌ, ์•„์ด๋ดํ‹ฐํ‹ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ถ„๋ฐฐํ•˜๋ฉฐ, ์‹œ์Šคํ…œ ์ „๋ฐ˜์— ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ ˆ์ด์–ด์—์„œ JWT๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ๊ต‰์žฅํžˆ ์‚ฌ์†Œํ•œ ์‹คํ–‰์ž…๋‹ˆ๋‹ค.

10. ์žฅ์• ๋ฅผ ์œ„ํ•œ ์„ค๊ณ„

๋ชจ๋…ธ๋ฆฌํ‹ฑ ์„ค๊ณ„์™€ ๋น„๊ตํ•ด ๋ณผ ๋•Œ MSA๋Š” ๋ถ„์‚ฐ๋œ ์„œ๋น„์Šค๋ฅผ ๋„์ž…ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ ์žฅ์•  ๋ฐœ์ƒ ํ™•๋ฅ ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ๋“ค์€ MSA์™€ ํ•จ๊ป˜ ๋ฐœ๋ช…๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ณต๊ฐ„์— ์˜ค๋ž˜ ๋™์•ˆ ์กด์žฌํ•ด ์™”์Šต๋‹ˆ๋‹ค. (MSA๋Š” ์ด๋Ÿฌํ•œ ์ปจ์…‰์˜ ์ค‘์š”์„ฑ ๋งŒ์„ ๊ฐ•์กฐํ•  ๋ฟ์ž…๋‹ˆ๋‹ค. )์„œ

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

๋˜ํ•œ ์„œ๋น„์Šค๋Š” ์–ธ์ œ๋“  ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์žฅ์• ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐ์ง€ (์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง)ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ณ , ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ž๋™ ๋ณต์› ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋งฅ๋ฝ์—์„œ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ํŒจํ„ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

10.1 ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์™ธ๋ถ€ ํ˜ธ์ถœ์„ ํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฐ ํ˜ธ์ถœ์— ์žฅ์•  ๋ชจ๋‹ˆํ„ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์žฅ์• ๊ฐ€ ํŠน์ • ๋ถ„๊ธฐ์ ์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๋Š” ์„œ๋น„์Šค์˜ ์ถ”๊ฐ€ ํ˜ธ์ถœ์„ ์ •์ง€ํ•ฉ๋‹ˆ๋‹ค. (์„œํ‚ท ํŠธ๋ฆฝ). ์˜คํ”ˆ ์Šคํ…Œ์ดํŠธ์—์„œ ์ผ์ • ์ˆ˜์ค€์˜ ์š”์ฒญ ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ (ํ™˜๊ฒฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค), ์„œํ‚ท์„ ๋‹ค์‹œ ํด๋กœ์ฆˆ ์Šคํ…Œ์ดํŠธ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์ด ํŒจํ„ด์€ ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ํ”ผํ•˜๊ณ , ํƒ€์ž„์•„์›ƒ์œผ๋กœ ์ธํ•œ ๋”œ๋ ˆ์ด ์š”์ฒญ์„ ํ•˜๋Š”๋ฐ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋Šฅ๋ ฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. (์•กํ‹ฐ๋ธŒ ์˜คํ”ˆ ์„œํ‚ท ์Šคํ…Œ์ดํŠธ ๊ธฐ๋ฐ˜)

10.2 ๋ฒŒํฌํ—ค๋“œ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค๋Š” ๊ฐ€์ • ํ•˜์—, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ€๋ถ„ ์žฅ์• ๊ฐ€ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒŒํฌ ํ—ค๋“œ ํŒจํ„ด์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ๊ณ ๋ฆฝ์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ์จ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•œ ๋ถ€๋ถ„์— ์„œ๋น„์Šค ์žฅ์• ๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

10.3 ํƒ€์ž„์•„์›ƒ

ํƒ€์ž„์•„์›ƒ ํŒจํ„ด์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ๋ถ€ํ„ฐ์˜ ์‘๋‹ต์ด ์˜ค์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋  ๋•Œ ์ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ์ค‘์ง€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์›ํ•˜๋Š” ๋งŒํผ์˜ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„์— ๋…ผ์˜ํ•œ ํŒจํ„ด์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ„ด๋“ค์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (์˜ˆ. Hystrix)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐœ๋ฐœํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ด๋Ÿฌํ•œ ํŒจํ„ด์„ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

11. ์„œ๋น„์Šค/ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜

MSA์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋‹จ์˜ ๋…๋ฆฝ๋œ ์„œ๋น„์Šค๋กœ์จ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋น„์ฆˆ๋‹ˆ์Šค ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹คํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ๋‹ค์–‘ํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค/ํ”„๋กœ์„ธ์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ์ธํ„ฐ-์„œ๋น„์Šค/ํ”„๋กœ์„ธ์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

itself. SOA ์‹คํ–‰์— ์žˆ์–ด์„œ ์„œ๋น„์Šค ๊ฐ„ ๋‚ด๋ถ€ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋น„์Šค ๋ฒ„์Šค(EBS)๋กœ ์•Œ๋ ค์ง„ ์„ผํŠธ๋Ÿด ๋Ÿฐํƒ€์ž„์— ์˜ํ•ด ์ด‰์ง„๋˜๋ฉฐ, ๋Œ€๋ถ€๋ถ„์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์ค‘๊ฐ„ ๋ ˆ์ด์–ด์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. (๋ฉ”์‹œ์ง€ ๋ผ์šฐํŒ…, ๋ณ€๊ฒฝ, ์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜) ๊ทธ๋Ÿฌ๋‚˜ MSA์€ ์„ผํŠธ๋Ÿด ๋ฉ”์‹œ์ง€ ๋ฒ„์Šค/ESB๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์„œ๋น„์Šค์™€ ํด๋ผ์ด์–ธํŠธ (โ€˜์Šค๋งˆํŠธ ์—”๋“œ ํฌ์ธํŠธโ€™๋ผ ํ•จ)์— โ€˜์Šค๋งˆํŠธํ•จ (smartness)โ€™ ํ˜น์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌํƒ€ ์„œ๋น„์Šค ๋ฐ ์‹œ์Šคํ…œ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ ๋„คํŠธ์›Œํฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋กœ์ง์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ž์ฒด์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ์จ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ƒํ˜ธ์ž‘์šฉ ๋ฐ ํ†ตํ•ฉ์€ ๋‘๊ฐœ์˜ ๋ฉ”์ธ ํ†ตํ•ฉ ์Šคํƒ€์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.: ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜, ๋ฆฌ์•ก์…˜ ์ปดํฌ์ง€์…˜.

11.1 ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‹คํ–‰์„ ์ž์„ธํžˆ ๋“ค์—ฌ๋‹ค๋ณด๋ฉด ํ‘œ 10์—์„œ์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์„œ๋น„์Šค๋ฅผ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Active composition of microservices

ํ‘œ 10: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜

๋Œ€๋ถ€๋ถ„์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋„คํŠธ์›Œํฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋กœ์ง์€ ์ ๊ฑฐ๋‚˜ ๊ฑฐ์˜ ์—†๋Š” ์ด˜์ด˜ํ•˜๊ณ  ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. (์™ธ๋ถ€ ์„œ๋น„์Šค ์ข…์† ์—†์Œ) ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋“ค์€ ์•„ํ† ๋ฏน/์ฝ”์–ด ์„œ๋น„์Šค๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„ํ† ๋ฏน/์ฝ”์–ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋งค์šฐ ์ด˜์ด˜ํžˆ ์กฐ์ง๋˜์–ด ์žˆ์–ด ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์„ฑ์— ๋”ฐ๋ผ ์ง์ ‘์ ์œผ๋กœ ๋งคํ•‘์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์€ ๋‹ค์ˆ˜์˜ ์•„ํ† ๋ฏน/์ฝ”์–ด ์„œ๋น„์Šค์˜ ๊ตฌ์„ฑ์ด ์š”๊ตฌ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋™๊ธฐํ™” ์š”์ฒญ-์‘๋‹ต ๋ฉ”์‹œ์ง€ ์Šคํƒ€์ผ๋กœ ๋‹ค์ˆ˜์˜ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ณตํ•ฉ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜์œผ๋กœ ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋“ค์€ ๋ณตํ•ฉ ํ˜น์€ ํ†ตํ•ฉ ์„œ๋น„์Šค๋กœ ๋ช…๋ช…๋˜๋ฉฐ ๋ผ์šฐํŒ…, ๋ณ€๊ฒฝ, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜, ๋ณต์›๋ ฅ ๋ฐ ์•ˆ์ •์„ฑ ํŒจํ„ด๊ณผ ๊ฐ™์€ SOA์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ESB ๊ธฐ๋Šฅ์˜ ํŠน์ • ๋ถ€๋ถ„์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ์€ ๋งค๋‹ˆ์ง€๋“œ ๊ด€๋ฆฌ API๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜๋ฉฐ, ์„ ํƒ๋œ ์ผ๋‹จ์˜ ๋ณตํ•ฉ ์„œ๋น„์Šค ํ˜น์€ ์•„ํ† ๋ฏน ์„œ๋น„์Šค์˜ ์ผ๋ถ€๋ถ„์ด API ์„œ๋น„์Šค/์—์ง€ ์„œ๋น„์Šค๋ฅผ ํ™œ์šฉํ•˜๋Š” API๋กœ ๋…ธ์ถœ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์˜ ๋ณตํ•ฉ ์„œ๋น„์Šค๋กœ API๋ฒ„์ €๋‹, API ๋ณด์•ˆ ํŒจํ„ด, ์“ฐ๋กœํ‹€๋ง, ์œ ๋ฃŒํ™” API ์ปดํฌ์ง€์…˜ ์ƒ์„ฑ์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ๋ผ์šฐํŒ… ์—ญ๋Ÿ‰์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

11.2 ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜

์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜ ์Šคํƒ€์ผ๋กœ๋Š” ๋ณตํ•ฉ ์„œ๋น„์Šค๊ฐ€ ์™„์ „ํžˆ ์ž์œจ์ ์œผ๋กœ ์šด์˜๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” API ํ˜น์€ ์™ธ๋ถ€ ์ง€ํ–ฅ ์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ์—๋Š” ์ข‹์œผ๋‚˜ ๋Œ€๋ถ€๋ถ„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ์„œ๋น„์Šค๊ฐ€ ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ-๊ธฐ๋ฐ˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ์ธํ„ฐ-์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ตฌ์ถ• ์Šคํƒ€์ผ์€ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ 11์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” โ€˜๋ค ํŒŒ์ดํ”„โ€™์˜ ์—ญํ• ์„ ํ•˜๋Š” ์ค‘์•™ ํ˜น์€ ๋ถ„์‚ฐ ์ด๋ฒคํŠธ ๋ฒ„์Šค/๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋ชจ๋“  ์Šค๋งˆํŠธ๋Š” ํ”„๋กœ๋“€์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ์‚ฌ์šฉ์ž ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

All microservices are exposed via an API-gateway

ํ‘œ 11: ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” API-๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฒ„์Šค๋Š” Kafka, AMQP, NATS.io.์™€ ๊ฐ™์€ ๊ธฐ์ˆ ๋“ค์„ ํ†ตํ•ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์œ ์Šค ์ผ€์ด์Šค์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ ๋ฒ„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ์ธ-๋ฉ”๋ชจ๋ฆฌ ํ˜น์€ ์ง€์† ๋ ˆ์ด์–ด๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

11.3 ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ปดํฌ์ง€์…˜

๋Œ€๋ถ€๋ถ„์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‹คํ–‰ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜๊ณผ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜ ๋ชจ๋ธ์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ‘œ 12์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ƒํ˜ธ์ž‘์šฉ ์„œ๋น„์Šค ๋ฐ ์™ธ๋ถ€ ์ง€ํ–ฅ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ์•กํ‹ฐ๋ธŒ ์Šคํƒ€์ผ๋กœ, ๋‹ค๋ฅธ ์ „๋‹ฌ ๋ณด์žฅ์„ ์š”๊ตฌํ•˜๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์Šคํƒ€์ผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Hybrid composition

ํ‘œ 12: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ปดํฌ์ง€์…˜

API๋ ˆ์ด์–ด๋Š” ์ปดํฌ์ง€์…˜ ๋ ˆ์ด์–ด ์œ„์— ์•‰ํ˜€์ง€๋ฉฐ, ๋‹ค๋ฅธ ์™ธ๋ถ€ ๋ฐ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์ปดํฌ์ง€์…˜ ๋ ˆ์ด์–ด๋ฅผ ํ†ตํ•ด ํ†ตํ•ฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

11.4 API ๊ด€๋ฆฌ

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

12. ์„œ๋น„์Šค ๋ฉ”์‰ฌ

์„œ๋น„์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์•…๋ชฝ ๊ฐ™์€ ์ผ์ž…๋‹ˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•˜๋Š” ๋Œ€์‹ ์—, ์„œ๋น„์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ธฐ๋Šฅ์„ ๊ตฌ์ถ•ํ•˜๋Š”๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์–ธ์–ด์— ๋”ฐ๋ผ ๋™์ผํ•œ ๋…ธ๋ ฅ์„ ๋ฐฐ๋กœ ๊ธฐ์šธ์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์ถ•์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋”์šฑ ์ตœ์•…์ž…๋‹ˆ๋‹ค. (์˜ˆ, ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค์™€ ๊ฐ™์€ ๊ฒฝ์šฐ, Java, Node, Python์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

๋Œ€๋ถ€๋ถ„์˜ ์ธํ„ฐ-์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์š”๊ฑด์ด ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‹คํ–‰ ๊ฐ„ ๊ฝค ์ผ๋ฐ˜์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ณ„์ธต์— ์˜คํ”„๋กœ๋”ฉํ•˜๋„๋ก ํ•˜์—ฌ, ์„œ๋น„์Šค ์ฝ”๋“œ๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฒฝ์šฐ ์„œ๋น„์Šค ๋ฉ”์‰ฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค ๋ฉ”์‰ฌ

ํ‘œ 13: ์‹คํ–‰ ์ค‘์ธ ์„œ๋น„์Šค ๋ฉ”์‰ฌ

์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ์ธํ„ฐ-์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ์ง์ ‘ ํ†ต์‹  ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์„œ๋น„์Šค ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์€ ์„œ๋น„์Šค ๋ฉ”์‰ฌ (ํ˜น์€ ์‚ฌ์ด๋“œ์นด ํ”„๋ก์‹œ)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ ์ƒ์—์„œ ์ด๋ฃจ์–ด ์ง‘๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ๋ณต์›์„ฑ ๋ฐ ์„œ๋น„์Šค ๊ฒ€์ƒ‰๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋นŒํŠธ์ธ ์„œํฌํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„œ๋น„์Šค ๊ฐœ๋ฐœ์ž๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ๋”์šฑ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๋„คํŠธ์›Œํฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ด€๋ จ๋œ ๋Œ€๋ถ€๋ถ„์˜ ์ž‘์—…์€ ์„œ๋น„์Šค ๋ฉ”์‰ฌ๊ฐ€ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์„œํ‚ท ๋ธŒ๋ ˆ์ดํ‚น์— ๋Œ€ํ•˜์—ฌ ๋” ์ด์ƒ ๊ฑฑ์ •ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์„œ๋น„์Šค ๋ฉ”์‰ฌ์˜ ์ผ๋ถ€๋ถ„์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ์–ธ์–ด์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฉ”์‰ฌ ํ”„๋ก์‹œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์— ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” HTTP.1/2/x ๋ฐ gPRC์™€ ๊ฐ™์€ ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ ์œ„์— ํ•ญ์ƒ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ด์„œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ•ด๋„ ํ•ด๋‹น ์„œ๋น„์Šค ๋ฉ”์‰ฌ๋ฅผ ํ†ตํ•ด ์ž˜ ์ž‘๋™ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์„œ๋น„์Šค ๋ฉ”์‰ฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋Šฅ๋“ค์ž…๋‹ˆ๋‹ค.

  • ์ธํ„ฐ์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์œ„ํ•œ ํšŒ๋ณต์„ฑ: ์„œํ‚ท ๋ธŒ๋ ˆ์ดํ‚น, ์žฌ์‹œ๋„ ๋ฐ ํƒ€์ž„์•„์›ƒ, ์žฅ์•  ์ธ์ ์…˜, ์žฅ์•  ์ฒ˜๋ฆฌ, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ, ์‹œ์Šคํ…œ ๋Œ€์ฒด์ž‘๋™
  • ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ: ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ ๊ฒ€์ƒ‰
  • ๋ผ์šฐํŒ…: ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ ๋ผ์šฐํŒ… ์—ญ๋Ÿ‰, ์„œ๋น„์Šค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ๊ด€๋ จ ๋ผ์šฐํŒ… ๋กœ์ง ์—†์Œ
  • ๊ด€์ธก๊ฐ€๋Šฅ์„ฑ: ๋งคํŠธ๋ฆญ์Šค, ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ถ„์‚ฐ ๋กœ๊น…, ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ
  • ๋ณด์•ˆ: ์ „์†ก์ˆ˜์ค€๋ณด์•ˆ ๋ฐ ํ‚ค ๊ด€๋ฆฌ
  • ์ ‘๊ทผ ํ†ต์ œ: ๋‹จ์ˆœ ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ๋ฐ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ํ†ต์ œ
  • ๋ฐฐํฌ: ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์œ„ํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์„œํฌํŠธ, ๋„์ปค ๋ฐ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
  • ์ธํ„ฐ์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํ”„๋กœํ† ์ฝœ: HTTP1.1, HTTP2, gRPC

์„œ๋น„์Šค ๋ฉ”์‰ฌ๋Š” ์„œ๋น„์Šค ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ๋ถ€ํ„ฐ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ด€๋…์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์‹ ์˜ ์„œ๋น„์Šค ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐ๋Šฅ ์‹คํ–‰์€ ์ž์‹ ์˜ ์ฑ…์ž„์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถ„์‚ฐ ESB๊ฐ€ ์ ˆ๋Œ€ ์•„๋‹™๋‹ˆ๋‹ค. (์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ [1] ๋ฐ [2] ์ฐธ์กฐ)

13. ํŠธ๋žœ์žญ์…˜

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์—์„œ ํŠธ๋žœ์žญ์…˜ ์„œํฌํŠธ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”? ์‚ฌ์‹ค ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋ถ„์‚ฐ๋œ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ๋ณต์žกํ•œ ์ผ์ž…๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ์—†๋Š” ์กฐํ™”๋ฅผ ์ด‰์ง„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ์™„์ „ํžˆ ๋…๋ฆฝ ์ ์ด๋ฉฐ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์—์„œ ํŠธ๋žœ์žญ์…˜์€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์˜์—ญ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์ ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์ˆ˜์˜ ์„œ๋น„์Šค์— ๋ถ„์‚ฐ๋œ ํŠธ๋žœ์žญ์…˜์ด ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ, ๋ฌด์Šจ ์ˆ˜๋ฅผ ์จ์„œ๋ผ๋„ 2๋‹จ๊ณ„ ์‹คํ–‰(2PC)์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŒจํ„ด์€ SAGA ํŒจํ„ด์„ ๋„์ž…ํ•ด์•ผ ์‹คํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, [1] ์ด๋Š” ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ฒด๊ณ„์—์„œ โ€˜๋ณด์ƒ ์šด์˜โ€™ ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋‹จ์ผ ์ฑ…์ž„ ์›์น™์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ฃผ์–ด์ง„ ์ž‘์—…์„ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ, ์ด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „์ฒด์˜ ์žฅ์• ๋กœ ๊ฐ„์ฃผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ๊ธฐํƒ€ (์—…์ŠคํŠธ๋ฆผ) ์ž‘์—…๋“ค์€ ์ด๋Ÿฌํ•œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ๊ฐ์˜ ๋ณด์ƒ ์ž‘์—…์„ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ๋ฌดํšจํ™” ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ๊ตฌ์ถ•์„ ์œ„ํ•œ SAGA ํŒจํ„ด ์‹คํ˜„์— ๋Œ€ํ•œ ๋”์šฑ ์ž์„ธํ•œ ๋‚ด์šฉ์€ [1]์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

14. WS02๋ฅผ ํ™œ์šฉํ•ด MSA ์‹คํ˜„ํ•˜๊ธฐ

MSA์˜ ๋‹ค์–‘ํ•œ ๋ฉด์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด WS02์˜ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ์™€ 100% ์˜คํ”ˆ ์†Œ์Šค ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด WS02์— ์˜ํ•ด ๊ตฌ๋™๋˜๋Š” Ballerina ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœ๋ ˆ๋ฆฌ๋‚˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž‘์—…์„ ๋‹จ์ˆœํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ƒํ˜ธ์ž‘์šฉ, ๋„คํŠธ์›Œํฌ ํƒ€์ž…, ๋ฆฌ์งˆ๋ฆฌ์–ธํŠธ ์ธํ„ฐ-์„œ๋น„์Šค ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜, ๋ฐ์ดํ„ฐ ํ†ตํ•ฉ, ๊ด€์ธก๊ฐ€๋Šฅ์„ฑ ๋ฐ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์—์ฝ”์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์— ๋Œ€ํ•œ ์ถ”์ƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐœ๋ ˆ๋ฆฌ๋‚˜๋Š” ๋‹ค์ˆ˜์˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค (์ฝ”์–ด ์„œ๋น„์Šค)์˜ ์ปดํฌ์ง€์…˜ (์•กํ‹ฐ๋ธŒ ํ˜น์€ ๋ฆฌ์•ก์…˜)์„ ์ƒ์„ฑํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ WSO2 Micro Integrator ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ง๊ด€์  ๊ทธ๋ž˜ํ”ฝ ๊ฐœ๋ฐœ๋„๊ตฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์•กํ‹ฐ๋ธŒ ํ˜น์€ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ปดํฌ์ง€์…˜ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜ ์–ธ์–ด (DSL)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉํ•˜๋„๋ก ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค. WS02 Micro Integrator๋Š” ์„ฑ๋Šฅ์ด ์ž…์ฆ๋œ, ์—ญ์ „์˜ WSO2 Enterprise Integrator/WSO2 ESB ์˜ ํ•œ ๋ณ€ํ˜•์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ†ตํ•ฉ ์„œ๋น„์Šค ๊ตฌ์ถ•์„ ์œ„ํ•ด์„œ ๋ณธ์ธ์˜ ์ทจํ–ฅ์— ๋”ฐ๋ผ Ballerina ํ˜น์€ Micro Integrator๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ‘œ 13) ๋˜ํ•œ ๊ธฐ์กด์˜ ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ์„ ์œ„ํ•ด ์„ผํŠธ๋Ÿด WS02 Enterprise Integrator๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

API ์„œ๋น„์Šค ๋ ˆ์ด์–ด WS02 API Manager์™€ ํ•จ๊ป˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋ฉฐ WS02 Identity Server๋Š” API ํŠธ๋ž˜ํ”ฝ ๋ณด์•ˆ์„ ์œ„ํ•œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œ๊ณต์ž ํ˜น์€ ์ฃผ์š” ๊ด€๋ฆฌ์ž๋กœ์จ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  WS02๊ธฐ์ˆ ์€ Docker, Kubernetes, Istio ์„œ๋น„์Šค ๋ฉ”์‹œ์™€ ๊ฐ™์€ ๋ฐฐํฌ ๊ธฐ์ˆ  ๋ฐ Prometheus, Grafana, Zipkin, Jaeger์™€ ๊ฐ™์€ ๊ด€์ธก๊ฐ€๋Šฅ์„ฑ ๋„๊ตฌ์™€ ํ•จ๊ป˜ ๋งค๋„๋Ÿฝ๊ฒŒ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Realizing microservices architecture with WSO2 products and technologies.

ํ‘œ 14: WS02 ์ œํ’ˆ๊ณผ ๊ธฐ์ˆ ์„ ํ†ตํ•ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ์‹คํ˜„ํ•˜๊ธฐ

15. ๊ฒฐ๋ก 

MSA๋ฅผ ์–ด๋–ป๊ฒŒ ํ˜„๋Œ€ ๊ธฐ์—…์˜ IT ํ™˜๊ฒฝ์— ์‚ฌ์šฉํ•  ์ง€ ๊ฒฐ์ •ํ•  ๋•Œ ๋‹ค์Œ์˜ ์ฃผ์š” ์‚ฌํ•ญ๋“ค์„ ๋ช…์‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋งŒ๋ณ‘ํ†ต์น˜์•ฝ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๊ธฐ์—…์˜ ๋ชจ๋“  IT ๋‹ˆ์ฆˆ๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ์•„ํ‚คํ…์ฒ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ์™€ ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ (Kubernetes) ์„ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด , SOA๋ฅผ ๊ฝค ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—…์€ ์ž์‹ ์˜ IT์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€์‹ ์— MSA์˜ ์žฅ์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ™œ์šฉ ์‚ฌ๋ก€์— ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ์—…ํ†ตํ•ฉ์€ ์ ˆ๋Œ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ํ†ตํ•ฉ์— ์žˆ์–ด ์ค‘์‹ฌ ํ†ตํ•ฉ ๋ ˆ์ด์–ด๋Š” ์—†์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ†ตํ•ฉ ์š”๊ฑด์€ ์‚ฌ๋ผ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ˆ˜์ค€์—์„œ ์‹คํ–‰ ์ค‘์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋…ธ๋ฆฌํ‹ฑ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ์„ผํŠธ๋Ÿด ๋ฒ„์Šค/ESB์˜ ํ˜•ํƒœ๋กœ์˜ ํ†ตํ•ฉ์„ ์—ฌ์ „ํžˆ ์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ์•„ํ‚คํ…์ฒ˜ ์Šคํƒ€์ผ์˜ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ˜น์€ ๊ณต์กด์ด ๋”์šฑ ์‹ค์šฉ์ ์ž…๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค ์—ญ๋Ÿ‰์€ API ๊ด€๋ฆฌ ๊ธฐ์ˆ ์„ ํ™œ์šฉํ•˜์—ฌ API๋กœ ๋…ธ์ถœ์‹œ์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์•„๋‹Œ, ์„œ๋น„์Šค ๋งค์‰ฌ ๋ ˆ์ด์–ด์— ๋„คํŠธ์›Œํฌ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ด€๋ จ ๋ณต์žก์„ฑ์„ ์–ด๋Š ์ •๋„ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์ˆ  ์„ ํƒ์„ ๋‹ค๋ณ€ํ™”ํ•˜๊ณ  ์ตœ์ƒ์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•œ ๊ธฐ์ˆ ์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์ถ•์— ์žˆ์–ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

16. ์ฐธ๊ณ ์ž๋ฃŒ

์†”๋ฃจ์…˜ ์ƒ์„ธ ์†Œ๊ฐœ ํ˜น์€ ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ?

x

๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ์ปจํ…์ธ ์—๋„ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”?