[TIL] Middleware

์€๊ฒฝยท2022๋…„ 3์›” 1์ผ
0

[Infrastructure] IT ์ธํ”„๋ผ

๋ชฉ๋ก ๋ณด๊ธฐ
1/1

๐Ÿ“Œ (์ฐธ๊ณ ) ์ธํ”„๋ผ์— ๊ด€ํ•ด ์ž˜ ์ •๋ฆฌ๋œ ๋ธ”๋กœ๊ทธ
๐Ÿ“Œ (์ฐธ๊ณ ) ๋„ค์ด๋ฒ„ ํด๋ผ์šฐ๋“œ IT์ธํ”„๋ผ ๊ฐ•์˜ 1ํŽธ

1. ๋ฏธ๋“ค์›จ์–ด (Middleware) ๋ž€ ?


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

  • ์ˆจ๊ฒจ์ง„ ๋ณ€ํ™˜ ๊ณ„์ธต์œผ๋กœ์จ ๊ธฐ๋Šฅํ•จ (๋ฐ์ดํ„ฐ์™€ DB๊ฐ€ ํŒŒ์ดํ”„ ์‚ฌ์ด๋ฅผ ์‰ฝ๊ฒŒ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐํ•˜๊ธฐ ๋ฐฐ๊ด€ ์ด๋ผ๊ณ ๋„ ํ•จ)
  • 3๊ณ„์ธต ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ๊ตฌ์กฐ์—์„œ ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์กด์žฌ
  • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ์ค‘๊ฐ„์— ๋ฏธ๋“ค์›จ์–ด๊ฐ€ ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

2. 3-Tier ๊ตฌ์กฐ


  • ๊ธฐ์กด ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์šด์˜ ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ํ•œ๊ณณ์˜ ์„œ๋ฒ„์—์„œ ํ†ตํ•ฉ ์ œ๊ณต๋˜์—ˆ์Œ -> ๋”ฐ๋ผ์„œ ๊ด€๋ฆฌ ํฌ์ธํŠธ๊ฐ€ 1๊ฐœ์ž„ (1-Tier ๊ตฌ์กฐ)

  • ๊ด€๋ฆฌ ํฌ์ธํŠธ๊ฐ€ 1๊ฐœ์ผ ๋•Œ์˜ ๋‹จ์ ์ด ์กด์žฌ

    • ํ•ด๋‹น ํ†ตํ•ฉ ์„œ๋ฒ„์— ๋ฌธ์ œ ๋ฐœ์ƒ์‹œ ์„œ๋น„์Šค ์žฅ์•  ๋ฐœ์ƒ, ๋ถ„์„ ๋˜ํ•œ ์‰ฝ์ง€ ์•Š์Œ.
  • ๊ทธ๋ž˜์„œ DBMS ํ™˜๊ฒฝ์„ ๋ถ„๋ฆฌํ•จ -> ์•ˆ์ •์„ฑ ์ฆ๊ฐ€

    • ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž ์š”์ฒญ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ฒ˜๋ฆฌ๋Š” ์•„์ง ํ†ตํ•ฉ๋œ ์„œ๋น„์Šค์—์„œ ์ œ๊ณต๋จ
  • ๋™์‹œ์— ์‚ฌ์šฉ์ž์˜ ํ˜ธ์ถœ์ด ์Œ“์ด๋ฉด ํ†ตํ•ฉ๋œ ์„œ๋น„์Šค(์‚ฌ์šฉ์ž ์š”์ฒญ<->๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)์—์„œ๋„ ๋ถ€ํ•˜๋ฅผ ๋ฐ›์œผ๋ฏ€๋กœ 3๊ฐœ์˜ ๊ด€๋ฆฌ ํฌ์ธํŠธ(3-Tier๊ตฌ์กฐ)๋กœ ๋ถ„๋ฆฌ ํ•˜๊ฒŒ๋จ.

    • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ์œ ์ž…๋˜๋Š” ์ˆœ๊ฐ„ ํ˜ธ์ถœ๋˜๋Š” ์•ž๋‹จ(Front-end)์˜ ์ •์  ํŽ˜์ด์ง€(html, css, js, png ๋“ฑ)๋ฅผ ์ „์šฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„
    • ๋กœ๊ทธ์ธ, ๊ฒ€์ƒ‰ ๋“ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋’ท๋‹จ(Back-end)์˜ ๋™์  ํŽ˜์ด์ง€(jsp, servlet ๋“ฑ)๋ฅผ ์ „์šฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋ฒ„

๋”ฐ๋ผ์„œ ๋ฏธ๋“ค์›จ์–ด ๋‹ด๋‹น์ž๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์— ์œ„์น˜ํ•œ Web Application Server (WAS)๋ฅผ ๊ด€๋ฆฌ.


์ถœ์ฒ˜ : https://velog.io/@unyoi/

3. ๋ฏธ๋“ค์›จ์–ด์˜ ํŠน์ง•


  • ํ‘œ์ค€ํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
  • ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์ง€์› ๋ฐ ์ฒด๊ณ„๊ฐ€ ๋‹ค๋ฅธ ์—…๋ฌด์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์คŒ
  • ๋ถ„์‚ฐ๋œ ์—…๋ฌด ๋™์‹œ์ฒ˜๋ฆฌ -> ์ผ๊ด€์„ฑ ์œ ์ง€ , ๋ถ€ํ•˜์˜ ๋ถ„์‚ฐ
  • ๋‹ค์–‘ํ•œ ๋ฒค๋”์˜ ํ”Œ๋žซํผ์„ ๋„คํŠธ์›Œํฌ ์ฐจ์ด๋ฅผ ์˜์‹ํ•˜์ง€ ์•Š๊ณ  ์ƒํ˜ธ ์ ‘์†ํ•˜์—ฌ ์ด์šฉ๊ฐ€๋Šฅ ํ•˜๋„๋ก ์กด ํ”Œ๋žซํผ์ด ํ†ตํ•ฉ๋จ
  • ์กฐ์ž‘ ์šฐ์ˆ˜, ์‚ฌ์šฉ ํŽธ๋ฆฌ, ์‰ฌ์šด GUI, ์ž์œ ๋กœ์šด ์ ‘๊ทผ

4. ๋ฏธ๋“ค์›จ์–ด์˜ ์ข…๋ฅ˜


๐Ÿ“Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฏธ๋“ค์›จ์–ด

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด

  • ODCB
    • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์—์„œ ๋งŒ๋“ฌ, ์œˆ๋„์šฐ ๊ธฐ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋จ
    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๊ฐœ๋ฐœ ํˆด์—์„œ DB์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๋„๋ก api ์ œ๊ณต
  • IDAPI
    • Inprise์—์„œ ๋งŒ๋“ฌ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›๊ฑฐ๋ฆฌ DB์— ์ ‘๊ทผํ•  ๋•Œ ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„
  • RDA/DRDA
    • RDA์™€ DRDA๋Š” ์ œํ’ˆ์ด ์•„๋‹Œ ํ‘œ์ค€์ด๋‹ค. IBM์˜ DB์ ‘์† ํ‘œ์ค€.
    • ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ DB์— ์ ‘๊ทผํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋™์‹œ์— ์—ฐ๊ฒฐ์„ ์ œ๊ณต.
  • ๊ฐ์ฒด ์—ฐ๊ฒฐ ์‚ฝ์ž… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    • ๋งˆ์ดํฌ๋กœ์†Œํ”„ํŠธ์˜ ์ œํ’ˆ, ํด๋ผ์ด์–ธํŠธ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค์˜ ๊ฐ์ฒด์ง€ํ–ฅํ™”์— ๋”ฐ๋ผ ๊ฐ์ฒด์ง€ํ–ฅ ํŒจ๋Ÿฌ๋‹ค์ž„์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฏธ๋“ค์›จ์–ด์— ์ ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ•œ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ
  • ์™€์Šค(WAS)
    • ๋ธŒ๋ผ์šฐ์ €์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS) ์‚ฌ์ด์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ฏธ๋“ค์›จ์–ด๋กœ, ์›น ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์ค‘ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋™์ž‘ํ•˜๋„๋ก ์ง€์›ํ•˜๋Š” ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    • ์›น ์„œ๋ฒ„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ •์ ์ธ ์ฝ˜ํ…์ธ ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ณ , ์™€์Šค๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์ „์†กํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค

๐Ÿ“Œ ํ†ต์‹  ๋ฏธ๋“ค์›จ์–ด

ํ†ต์‹  ๋ฏธ๋“ค์›จ์–ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„์˜ ์ •๋ณด ๊ตํ™˜์„ ์ œ๊ณตํ•˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ์— ์žˆ์–ด ํ™•์‹คํ•œ ํ”„๋กœ๊ทธ๋žจ ๊ฐ„ ํ†ต์‹  ๋ชจ๋ธ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ์›๊ฒฉ ํ”„๋กœ์‹œ์ € ํ˜ธ์ถœ (Remote Procedure Call, RPC)
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›๊ฒฉ์—์„œ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹œ์Šคํ…œ. ๋™๊ธฐ ๋˜๋Š” ๋น„๋™๊ธฐ ์ง€์›.
  • ๋ฉ”์‹œ์ง€ ์ง€ํ–ฅ ๋ฏธ๋“ค์›จ์–ด (Message Oriented Middleware, MOM)
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ๋ฉ”์‹œ์ง€๋Š” ์ €์žฅ์†Œ์— ์š”์ฒญํ•  ๋•Œ ์ €์žฅํ•˜๋ฉด์„œ, ๋‹ค๋ฅธ ์—…๋ฌด๋ฅผ ์ง€์†ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋น„๋™๊ธฐ์‹ ๋ฏธ๋“ค์›จ์–ด.

์ฐธ๊ณ  ์ž๋ฃŒ (Reference)


https://velog.io/@unyoi/%EC%9D%B8%ED%94%84%EB%9D%BC-%EB%BF%8C%EC%8B%9C%EA%B8%B01-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%85%90%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90
https://ko.wikipedia.org/wiki/%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4
http://wiki.hash.kr/index.php/%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4

profile
Python ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€