์ฐ๋ฆฌ ๊ณ ๊ฐ์ ํฌํจํ ์ผ๋ถ ํ์ฌ๋ ์ ํด ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ์ ๊ฐ๋ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ํ ์จ๋ผ์ธ ์์ ์ ๋ฐฐ์ก ์๋น์ค์ ํตํฉ๋์ด ์์ต๋๋ค. ์ฆ, ์ ํ์ ์ฃผ๋ฌธํ๋ฉด ๊ณง ์ํฌ ์ถ์ ๋ฒํธ๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ์๋ ํญ๊ณต๊ถ๊ณผ ํจ๊ป ๋ณดํ์ด๋ Aeroexpress ํญ๊ณต๊ถ์ ๊ตฌ๋งคํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ์ํด API ๊ฒ์ดํธ์จ์ด๋ฅผ ํตํด ํํธ๋์๊ฒ ๋ฐ๊ธ๋์ด์ผ ํ๋ ํ๋์ API๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ์ธ๋ถ ์ฌํญ์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฃผ์ด์ง ๋ด์ฉ: ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ๊ณ ์ ๋ณด๋ฅผ ๋ฐ๋ ๋ฑ์ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ถ ์ํ๊ณ์ API ํฌํธ ํธ๋ฆฌํ๊ณ ์์ ์ ์ธ API ๊ฒ์ดํธ์จ์ด๋ฅผ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ๋ค์์ ๋ณด์ฅํด์ผ ํ์ต๋๋ค.
- ๋ฑ๋ก,
- API ์ฐ๊ฒฐ ์ ์ด,
- ์ฌ์ฉ์๊ฐ ์ต์ข ์์คํ ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ํฐ๋งํ๊ณ ,
- ๋น์ฆ๋์ค ์งํ ํ๊ณ.

์ด ๊ธฐ์ฌ์์๋ API Gateway๋ฅผ ์์ฑํ๋ฉด์ ๋ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒฝํ์ ๋ํด ์ค๋ช
ํฉ๋๋ค.
- ์ฌ์ฉ์ ์ธ์ฆ,
- ์ฌ์ฉ์ ์ธ์ฆ,
- ์๋ ์์ฒญ์ ์์ ํ๊ณ ,
- ์์ฒญ์ ํ๋ก์ํ๊ณ ,
- ์๋ต ํ์ฒ๋ฆฌ.
API ๊ด๋ฆฌ์๋ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค.
1. ํ์ค์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํฉ๋๋ค. ์ฐ๊ฒฐํ๊ธฐ ์ ์ ์ฌ์ฉ์๋ ๊ธฐ๋ฅ์ ํ ์คํธํ ๋ค์ ๋น์ฉ์ ์ง๋ถํ๊ณ ์น์ฌ์ดํธ์ ์ฝ์ ํฉ๋๋ค. ๋๋ถ๋ถ ์ค์๊ธฐ์ ์์ ์ฌ์ฉ๋ฉ๋๋ค.
2. ๋๊ท๋ชจ B2B API ๊ด๋ฆฌ๋ ํ์ฌ๊ฐ ์ฒ์ ์ฐ๊ฒฐํ๊ธฐ๋ก ์ฌ์ ์ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๊ณ์ฝ์์ ์๋ฌด๋ฅผ ๊ฐ์ง๊ณ ํ์ฌ์ ํํธ๋๊ฐ ๋ ํ API์ ์ฐ๊ฒฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ ์ฐจ๊ฐ ์๋ฃ๋๋ฉด ํ์ฌ๋ ํ ์คํธ ์ก์ธ์ค ๊ถํ์ ๋ฐ๊ณ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ์์ฐ์ ๋ค์ด๊ฐ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ฐ๊ฒฐ์ ๋ํ ๊ฒฝ์์ง์ ๊ฒฐ์ ์์ด๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค.

์ฐ๋ฆฌ์ ์๋ฃจ์
์ด๋ฒ ์๊ฐ์๋ API Gateway ์์ฑ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์์ฑ๋๋ API ๊ฒ์ดํธ์จ์ด์ ์ต์ข ์ฌ์ฉ์๋ ๊ณ ๊ฐ์ ํํธ๋์ ๋๋ค. ๊ฐ๊ฐ์ ๋ํด ํ์ํ ๊ณ์ฝ์ด ์ด๋ฏธ ์ ์ฅ๋์ด ์์ต๋๋ค. ๊ฒ์ดํธ์จ์ด์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ์ฌ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ์ด๋ ์ฐ๊ฒฐ ๋ฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค๊ฐ ํ์ํฉ๋๋ค.
๋ฌผ๋ก API ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ํนํ API ๊ฒ์ดํธ์จ์ด๋ฅผ ์์ฑํ๊ธฐ ์ํด ๊ธฐ์ฑ ์๋ฃจ์ ์ ์ฌ์ฉํ ์๋ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ ์์ต๋๋ค.. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ์ด๋ฏธ API ํฌํธ๊ณผ ์ด๋ฅผ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋ ๊ฑฐ๋ํ ์ํ๊ณ๊ฐ ์์๊ธฐ ๋๋ฌธ์ ์ด๋ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์์ต๋๋ค. ๋ชจ๋ ์ฌ์ฉ์๋ ์ด๋ฏธ ๋ฑ๋ก๋์ด ์์ผ๋ฉฐ ํ์ํ ์ ๋ณด๋ฅผ ์ด๋์, ์ด๋ป๊ฒ ์ป์ ์ ์๋์ง ์ด๋ฏธ ์๊ณ ์์์ต๋๋ค. ํ์ํ ์ธํฐํ์ด์ค๋ ์ด๋ฏธ API ํฌํธ์ ์กด์ฌํ๋ฉฐ API ๊ฒ์ดํธ์จ์ด๋ง ํ์ํ์ต๋๋ค. ์ฌ์ค ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ฐ๋ฐํ๊ธฐ ์์ํ์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ API ๊ฒ์ดํธ์จ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ ์ผ์ข ์ ํ๋ก์์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ ํ์ ์ฌ์ง๊ฐ ์์์ต๋๋ค. ์์ ๋ง์ ํ๋ก์๋ฅผ ์์ฑํ ์๋ ์๊ณ ์ด๋ฏธ ๋ง๋ค์ด์ง ๊ฒ์ ์ ํํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ๊ฒฝ๋ก๋ฅผ ์ ํํ๊ณ nginx+Lua ์กฐํฉ์ ์ ํํ์ต๋๋ค. ์? ์ฐ๋ฆฌ๋ ํ์ฅ์ด ๊ฐ๋ฅํ๊ณ ์ ๋ขฐํ ์ ์๊ณ ํ ์คํธ๋ฅผ ๊ฑฐ์น ์ํํธ์จ์ด๊ฐ ํ์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ ํ์ฑ๊ณผ ๊ตฌํ ํ ํ๋ก์์ ์ฌ๋ฐ๋ฅธ ์๋์ ๋ชจ๋ ํ์ธํ๊ณ ์ถ์ง ์์์ต๋๋ค.
๋ชจ๋ ์น ์๋ฒ์๋ ์์ฒญ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ด ์์ต๋๋ค. nginx์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

(๋ค์ด์ด๊ทธ๋จ )
์ฐ๋ฆฌ์ ๋ชฉํ๋ ์๋ ์์ฒญ์ ์์ ํ ์ ์๋ ์ง์ ์์ ์ด ํ์ดํ๋ผ์ธ์ ์ฐ๋ฆฌ ์์ ์ ์ฝ์ ํ๋ ๊ฒ์ด์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๊ธฐ๋ฅ์ ์ผ๋ก ์์ฒญ์ด ์จ ๊ฒ๊ณผ ๋์ผํ๊ฒ ์ ์ง๋๋๋ก ํฌ๋ช ํ ํ๋ก์๋ฅผ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ต์ข API์ ๋ํ ์ก์ธ์ค๋ง ์ ์ดํ๊ณ ์์ฒญ์ด API์ ๋๋ฌํ๋๋ก ๋์ต๋๋ค. ์์ฒญ์ด ์๋ชป๋ ๊ฒฝ์ฐ ์ต์ข API์๋ ์ค๋ฅ๊ฐ ํ์๋์ง๋ง ์ฐ๋ฆฌ์๊ฒ๋ ํ์๋์ง ์์ต๋๋ค. ์์ฒญ์ ๊ฑฐ๋ถํ ์ ์๋ ์ ์ผํ ์ด์ ๋ ํด๋ผ์ด์ธํธ์ ์ก์ธ์ค ๊ถํ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
nginx์๋ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค. ์ . Lua๋ ์คํฌ๋ฆฝํ ์ธ์ด๋ก ๋งค์ฐ ๊ฐ๋ณ๊ณ ๋ฐฐ์ฐ๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ Lua๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค.
๋ชจ๋ ์์ ์ด ์๋ฃ๋๋ nginx ๊ตฌ์ฑ(๋ผ์ฐํธ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ฌ)์ ๋งค์ฐ ๋ช ํํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ๋ชฉํ ๋งํ ๋ง์ง๋ง ์ง์๋ฌธ์ post_action์ ๋๋ค.
location /middleware {
more_clear_input_headers Accept-Encoding;
lua_need_request_body on;
rewrite_by_lua_file 'middleware/rewrite.lua';
access_by_lua_file 'middleware/access.lua';
proxy_pass https://someurl.com;
body_filter_by_lua_file 'middleware/body_filter.lua';
post_action /process_session;
}
์ด ๊ตฌ์ฑ์์ ์ด๋ค ์ผ์ด ๋ฐ์ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
more_clear_input_headers โ ์ง์์ด ๋ค์ ์ง์ ๋ ํค๋ ๊ฐ์ ์ง์๋๋ค.
lua_need_request_body - rewrite/access/access_by_lua ์ง์๋ฌธ์ ์คํํ๊ธฐ ์ ์ ์๋ ์์ฒญ ๋ณธ๋ฌธ์ ์ฝ์ด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก nginx๋ ํด๋ผ์ด์ธํธ ์์ฒญ ๋ณธ๋ฌธ์ ์ฝ์ง ์์ผ๋ฉฐ, ์ก์ธ์คํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ์ง์๋ฌธ์ on์ผ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
rewrite_by_lua_file โ ์์ฒญ ์์ ๋
ผ๋ฆฌ๋ฅผ ์ค๋ช
ํ๋ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก
access_by_lua_file โ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ํ์ธํ๋ ๋
ผ๋ฆฌ๋ฅผ ์ค๋ช
ํ๋ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก์
๋๋ค.
ํ๋ก์ ํจ์ค โ ์์ฒญ์ด ํ๋ก์๋ URL์
๋๋ค.
body_filter_by_lua_file โ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐํํ๊ธฐ ์ ์ ์์ฒญ์ ํํฐ๋งํ๋ ๋
ผ๋ฆฌ๋ฅผ ์ค๋ช
ํ๋ ์คํฌ๋ฆฝํธ ๊ฒฝ๋ก์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก, post_action - ํด๋ผ์ด์ธํธ์ ์๋ต์ด ์ ๊ณต๋ ํ ๋ค๋ฅธ ์์
์ ์ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ณต์์ ์ผ๋ก ๋ฌธ์ํ๋์ง ์์ ์ง์์ด์
๋๋ค.
๋ค์์ผ๋ก ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ๋์ง ์์๋๋ก ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์น์ธ/์ธ์ฆ ๋ฐ ์์ ์์ฒญ
๊ถํ ๋ถ์ฌ
์ธ์ฆ์ ์ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ถํ ๋ถ์ฌ ๋ฐ ์ธ์ฆ์ ๊ตฌ์ถํ์ต๋๋ค. ๋ฃจํธ ์ธ์ฆ์๊ฐ ์์ต๋๋ค. ๊ณ ๊ฐ์ ์๋ก์ด ๊ฐ ํด๋ผ์ด์ธํธ๋ API์ ์ก์ธ์คํ ์ ์๋ ๊ฐ์ธ ์ธ์ฆ์๋ก ์์ฑ๋ฉ๋๋ค. ์ด ์ธ์ฆ์๋ nginx ์ค์ ์ ์๋ฒ ์น์ ์์ ๊ตฌ์ฑ๋ฉ๋๋ค.
ssl on;
ssl_certificate /usr/local/openresty/nginx/ssl/cert.pem;
ssl_certificate_key /usr/local/openresty/nginx/ssl/cert.pem;
ssl_client_certificate /usr/local/openresty/nginx/ssl/ca.crt;
ssl_verify_client on;์์
๊ณต์ ํ ์ง๋ฌธ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. ์ธ์ฆ๋ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฐ์๊ธฐ ์์คํ ์์ ์ฐ๊ฒฐ ํด์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๋ค๋ฅธ ๋ชจ๋ ํด๋ผ์ด์ธํธ์ ๋ํด ์ธ์ฆ์๋ฅผ ์ฌ๋ฐ๊ธํ์ง ๋ง์ญ์์ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์๋ ์์ฒญ์ ์์ ํ๋ ๋ค์ ์์ ์ ์์กฐ๋กญ๊ฒ ์ ๊ทผํ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ ์์ฒญ์ ์ต์ข ์์คํ ์ ์ ํจํ์ง ์์ต๋๋ค. ์์ ์ค ํ๋๋ ๋๋ฝ๋ ๋ถ๋ถ์ ์์ฒญ์ ์ถ๊ฐํ์ฌ ์ ํจํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๋ค. ์์ ์ ๋๋ฝ๋ ๋ฐ์ดํฐ๊ฐ ํด๋ผ์ด์ธํธ๋ง๋ค ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง๋ฌธ์ ์ฑ์ทจํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ํ ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ์ธ์ฆ์๋ฅผ ๊ฐ์ง๊ณ ์ฐ๋ฆฌ์๊ฒ ์จ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ด๋ ์์ ์ ๊ทํ๊ฐ ๋น์ฌ ์๋น์ค์์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ์ ๋์ด์ผ ํ๋ ๊ฒฝ์ฐ, ํด๋น ํด๋ผ์ด์ธํธ์ ๋ฐ์ดํฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ๋ผ์ง๊ณ ํด๋ผ์ด์ธํธ๋ ์๋ฌด๊ฒ๋ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
ํด๋ผ์ด์ธํธ ๋ฐ์ดํฐ ์์
์ฐ๋ฆฌ๋ ์๋ฃจ์ , ํนํ ๊ณ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ์ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํด์ผ ํ์ต๋๋ค. ๋ฌธ์ ๋ ์ด ๋ฐ์ดํฐ์ ์ฃผ์ ์์ค๊ฐ ์ 3์ ์๋น์ค์ด๊ธฐ ๋๋ฌธ์ ์ค๋จ ์์ด ์ถฉ๋ถํ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ฅํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ณ ๊ฐ ๋ฐ์ดํฐ์ ๊ณ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํด์ผ ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋๊ตฌ๋ก ์ ํํ์ต๋๋ค ์ด๋ ์ฐ๋ฆฌ์๊ฒ ๋ค์์ ์ ๊ณตํฉ๋๋ค:
- ๋ฐ์ดํฐ์ ๋ํ ๋น ๋ฅธ ์ ๊ทผ,
- ์๋ก ๋ค๋ฅธ ๋ ธ๋์ ๋ณต์ ๋ ๋ฐ์ดํฐ๋ก ์ฌ๋ฌ ๋ ธ๋์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ.
์ฐ๋ฆฌ๋ ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ๊ฐ์ฅ ๊ฐ๋จํ ์ ๋ต์ ๋ฐ๋์ต๋๋ค.

์ต์ข
์์คํ
์์
์ ์ธ์
๋ด์์ ์ด๋ฃจ์ด์ง๋ฉฐ ์ต๋ ๊ฐ์์๋ ์ ํ์ด ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ธ์
์ ๋ซ์ง ์์ผ๋ฉด ์ด๋ฅผ ์ํํด์ผ ํฉ๋๋ค.
๊ณต๊ฐ ์ธ์ ๋ฐ์ดํฐ๋ ์ต์ข ์์คํ ์์ ์ ๊ณต๋๋ฉฐ ์ฒ์์๋ Lua ์ธก์์ ์ฒ๋ฆฌ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ .NET์ผ๋ก ์์ฑ๋ ์์ ์ผ๋ก ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Hazelcast๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ ์ ๋ ๋น๋๋ก ์ด๋ ค ์๋ ์ธ์ ์ ์๋ช ์ ํ์ธํ๊ณ ์ฉ์ ์ธ์ ์ ๋ซ์ต๋๋ค.
Lua์ .NET ๋ชจ๋์์ Hazelcast์ ์ก์ธ์คํ์ธ์.
Hazelcast์ ํจ๊ป ์๋ํ๋ Lua ํด๋ผ์ด์ธํธ๋ ์์ง๋ง Hazelcast์๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ REST API๊ฐ ์์ต๋๋ค. .NET์ ๊ฒฝ์ฐ , ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ .NET ์ธก์์ Hazelcast ๋ฐ์ดํฐ์ ์ก์ธ์คํ ๊ณํ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๊ฑฐ๊ธฐ์ ์์์ต๋๋ค.

REST๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ .NET ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ๊ฒ์ํ ๋ ๋ค์ํ ์ง๋ ฌ ๋ณํ๊ธฐ์ ์ญ์ง๋ ฌ ๋ณํ๊ธฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ๋ผ์ REST๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ .NET ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ผ๋ฉฐ ๊ทธ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
๋๊ตฌ๋ ์ง ๊ด์ฌ์ด ์์ผ์๋ฉด ๋ณ๋์ ๊ธฐ์ฌ์์ ์ด ๋ฌธ์ ์ ๋ํด ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ์คํฌ์ผ๋ฌ - ๋ค์ด์ด๊ทธ๋จ์ ์์ต๋๋ค.

๋ก๊น ๋ฐ ๋ชจ๋ํฐ๋ง
.NET์ ํตํ ๋ก๊น ์ ๋ํ ๋น์ฌ์ ๊ธฐ์ ํ์ค์ Serilog์ด๋ฉฐ, ๋ชจ๋ ๋ก๊ทธ๋ ๊ถ๊ทน์ ์ผ๋ก Elasticsearch์ ์ ์ฅ๋๋ฉฐ Kibana๋ฅผ ํตํด ๋ถ์๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋น์ทํ ์ผ์ ํ๊ณ ์ถ์์ต๋๋ค. ์ ์ผํ ์ฌ๋ ๋ฐ๊ฒฌ๋ Elastic on Lua ์์ ์ ์ฒซ ๋ฒ์งธ ์์ฒญ์์ ์ค๋จ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Fluentd๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
โ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๊น ๊ณ์ธต์ ์ ๊ณตํ๋ ์คํ ์์ค ์๋ฃจ์ ์ ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ๊ณ์ธต์์ ๋ก๊ทธ๋ฅผ ์์งํ ๋ค์ ์ด๋ฅผ ๋จ์ผ ์์ค๋ก ๋ธ๋ก๋์บ์คํธํ ์ ์์ต๋๋ค.
API Gateway๋ K8S์์ ์คํ๋๋ฏ๋ก ๊ธฐ์กด์ fluentd ๊ฐ๋ฐฉํ TCP ํฌํธ์ ๋ก๊ทธ๋ฅผ ์ฐ๊ธฐ ์ํด ๋์ผํ Pod์ fluentd๊ฐ ํฌํจ๋ ์ปจํ ์ด๋๋ฅผ ์ถ๊ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค.
๋ํ Elasticsearch์ ์ฐ๊ฒฐ๋์ง ์์ ๊ฒฝ์ฐ Fluentd๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํด๋ณด์์ต๋๋ค. ์ดํ ๋์ ์ง์์ ์ผ๋ก ๊ฒ์ดํธ์จ์ด๋ก ์์ฒญ์ด ์ ์ก๋๊ณ , ๋ก๊ทธ๋ fluentd๋ก ์ ์ก๋์์ง๋ง Fluentd์ IP Elastic์ ๊ธ์ง๋์์ต๋๋ค. ์ฐ๊ฒฐ์ด ๋ณต์๋ ํ fluentd๋ ๋ชจ๋ ๋ก๊ทธ๋ฅผ Elastic์ผ๋ก ์๋ฒฝํ๊ฒ ์ ์กํ์ต๋๋ค.
๊ฒฐ๋ก
๊ตฌํ์ ์ํด ์ ํํ ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ฐ๋ฆฌ๋ ๋จ 2.5๊ฐ์ ๋ง์ ์ค์ ๋ก ์๋ํ๋ ์ ํ์ ์ ํฌ ํ๊ฒฝ์ ์ ๊ณตํ ์ ์์์ต๋๋ค.
์ด์ ๊ฐ์ ์ผ์ ํ๊ณ ์๋ ๊ฒฝ์ฐ, ๋จผ์ ํด๊ฒฐ ์ค์ธ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง, ์ด๋ฏธ ๋ณด์ ํ๊ณ ์๋ ๋ฆฌ์์ค๊ฐ ๋ฌด์์ธ์ง ๋ช ํํ๊ฒ ์ดํดํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ธฐ์กด API ๊ด๋ฆฌ ์์คํ ๊ณผ ํตํฉํ ๋์ ๋ณต์ก์ฑ์ ์ธ์ํ์ธ์.
๊ฐ๋ฐํ ๋ด์ฉ์ด ์ ํํ ๋ฌด์์ธ์ง ์ง์ ์ดํดํ์ญ์์ค. ์ฆ, ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋น์ฆ๋์ค ๋ก์ง๋ง, ๋๋ ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ์ ์ฒด ํ๋ก์๋ฅผ ์ดํดํ์ญ์์ค. ๋น์ ์ด ์ค์ค๋ก ํ๋ ๋ชจ๋ ์ผ์ ๋์ค์ ์ฒ ์ ํ๊ฒ ํ
์คํธ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ์์ง ๋ง์ธ์.
์ถ์ฒ : habr.com
