216.73.216.25 TODAY : 2,840
์ž๋ฃŒ์‹ค ์„œ๋ธŒ ํƒ€์ดํ‹€ ์•„์ด์ฝ˜

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ตœ์ƒ๊ธ‰

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 1์ฃผ์ฐจ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA) ๊ฐœ์š” - 04 API Gateway, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 1์ฃผ์ฐจ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ (MSA) ๊ฐœ์š” - 04 API Gateway, ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 49

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-10-03 13:44:12
  •  

- ์„ค๋ช…

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์šด์˜์˜ ํ•ต์‹ฌ: ๋ณต์žก์„ฑ ๊ด€๋ฆฌ โš™๏ธ


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



1. API ๊ฒŒ์ดํŠธ์›จ์ด (API Gateway)

uploadImage

API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๋‹ด๋‹นํ•˜๋Š” ๋‹จ์ผ ์ง„์ž…์  ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ #๋ชจ๋†€๋ฆฌ์‹_์•„ํ‚คํ…์ฒ˜ ์—์„œ๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ์ด ์—ญํ• ์„ ํ–ˆ์ง€๋งŒ, MSA์—์„œ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋”์šฑ ์ง€๋Šฅ์ ์ธ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿšช


1.1. API ๊ฒŒ์ดํŠธ์›จ์ด์˜ ์ฃผ์š” ๊ธฐ๋Šฅ


๊ธฐ๋Šฅ

์„ค๋ช…

MSA์—์„œ์˜ ์ค‘์š”์„ฑ

๋ผ์šฐํŒ… (Routing)

ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„ ์ ์ ˆํ•œ #๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ: /users ์š”์ฒญ์€ ์‚ฌ์šฉ์ž ์„œ๋น„์Šค๋กœ, /orders ์š”์ฒญ์€ ์ฃผ๋ฌธ ์„œ๋น„์Šค๋กœ)

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐœ๋ณ„ ์„œ๋น„์Šค์˜ URL์„ ์•Œ ํ•„์š” ์—†๋„๋ก ์„œ๋น„์Šค ์œ„์น˜๋ฅผ ์ถ”์ƒํ™”ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ

๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•œ #์ธ์ฆ (JWT/OAuth2) ๋ฐ #๊ถŒํ•œ ๊ฒ€์‚ฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค์˜ ๋ถ€๋‹ด์„ ์ค„์ž…๋‹ˆ๋‹ค.

๋ชจ๋“  ์„œ๋น„์Šค์— ๋ณด์•ˆ ๋กœ์ง์„ ์ค‘๋ณต ๊ตฌํ˜„ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๋ณด์•ˆ ์ •์ฑ… ์ค‘์•™ ์ง‘์ค‘ํ™”๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ง‘๊ณ„ (Aggregation)

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

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋น„์Šค ๊ฐ„์˜ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค.

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ (Load Balancing)

๋™์ผํ•œ ์„œ๋น„์Šค์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค์— ์š”์ฒญ์„ ๋ถ„์‚ฐํ•˜์—ฌ #๊ณ ๊ฐ€์šฉ์„ฑ ๊ณผ #ํ™•์žฅ์„ฑ ์„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋ž˜ํ”ฝ ํญ์ฃผ ์‹œ์—๋„ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์ œ๊ณต์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Sheets๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ


1.2. PHP ๊ธฐ๋ฐ˜ ๊ฒŒ์ดํŠธ์›จ์ด ์ „๋žต


  • ๊ฒฝ๋Ÿ‰ ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ: API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” I/O ๋ฐ”์šด๋“œ ์ž‘์—…์ด ๋งŽ์œผ๋ฏ€๋กœ, ๊ณ ์„ฑ๋Šฅ ์ฒ˜๋ฆฌ๊ฐ€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. PHP์˜ ๊ฒฝ์šฐ, #Swoole ๋˜๋Š” #OpenSwoole ๊ธฐ๋ฐ˜์˜ #๋น„๋™๊ธฐ_PHP ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋†’์€ ๋™์‹œ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ์ „๋žต์ด ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

  • ์ „๋ฌธ ๊ฒŒ์ดํŠธ์›จ์ด ์‚ฌ์šฉ: ์ผ๋ฐ˜์ ์œผ๋กœ Kong, Ocelot, Amazon API Gateway์™€ ๊ฐ™์ด C, Go ๋“ฑ์œผ๋กœ ๊ตฌํ˜„๋œ ์ „๋ฌธ์ ์ธ API ๊ฒŒ์ดํŠธ์›จ์ด ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ณ , PHP๋Š” ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋กœ๋งŒ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ๋ฐ ๊ด€๋ฆฌ ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.



2. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ (Service Discovery)


MSA ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๋Š” ๋ฐฐํฌ, ํ™•์žฅ, ์ถ•์†Œ ๊ณผ์ •์—์„œ ๋Š์ž„์—†์ด ์ƒ์„ฑ๋˜๊ณ  ํŒŒ๊ดด๋ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋Š” **'์–ด๋–ค ์„œ๋น„์Šค๊ฐ€ ํ˜„์žฌ ์–ด๋””์„œ(IP ์ฃผ์†Œ์™€ ํฌํŠธ) ์‹คํ–‰ ์ค‘์ธ์ง€'**์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๐Ÿ—บ๏ธ


2.1. ๋””์Šค์ปค๋ฒ„๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 


์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์˜ ์œ„์น˜๊ฐ€ ๊ณ ์ •์ ์ด์ง€ ์•Š๊ณ  ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ(๋˜๋Š” API ๊ฒŒ์ดํŠธ์›จ์ด)๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ์„œ๋น„์Šค์˜ ํ˜„์žฌ ์œ„์น˜๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.


2.2. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ์œ ํ˜•


uploadImage

2.2.1. ์„œ๋ฒ„ ์ธก ๋””์Šค์ปค๋ฒ„๋ฆฌ (Server-Side Discovery)


๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

  1. #์„œ๋น„์Šค_๋“ฑ๋ก (Service Registration): ๊ฐ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์ž์‹ ์˜ ๋„คํŠธ์›Œํฌ ์œ„์น˜๋ฅผ ์ค‘์•™์˜ #์„œ๋น„์Šค_๋ ˆ์ง€์ŠคํŠธ๋ฆฌ (#Consul, #Eureka, #ZooKeeper ๋“ฑ)์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

  2. #์„œ๋น„์Šค_์กฐํšŒ (Service Lookup): ํด๋ผ์ด์–ธํŠธ (์ฃผ๋กœ API ๊ฒŒ์ดํŠธ์›จ์ด)๊ฐ€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ์ฟผ๋ฆฌํ•˜์—ฌ ์‹ค์ œ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

  3. #์š”์ฒญ_์ „๋‹ฌ: ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์ด ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.


2.2.2. ํด๋ผ์ด์–ธํŠธ ์ธก ๋””์Šค์ปค๋ฒ„๋ฆฌ (Client-Side Discovery)


ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์กฐํšŒํ•˜์—ฌ ์„œ๋น„์Šค ๋ชฉ๋ก์„ ์–ป๊ณ , ์Šค์Šค๋กœ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  • PHP ์ ์šฉ: PHP ์„œ๋น„์Šค ๋‚ด๋ถ€์—์„œ Consul/Eureka ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ PHP ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์ง์ ‘ ์กฐํšŒํ•˜๊ณ  ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ค‘์•™ ๊ฒŒ์ดํŠธ์›จ์ด ์—†์ด ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹ (Service-to-Service Communication)์„ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.



3. PHP์—์„œ MSA ์ธํ”„๋ผ ํ†ตํ•ฉ ์ „๋žต

uploadImage

#PHP ์„œ๋น„์Šค๋Š” MSA ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ๋งŽ์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฒŒ์ดํŠธ์›จ์ด์™€ ๋””์Šค์ปค๋ฒ„๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


3.1. ์„œ๋น„์Šค ๋“ฑ๋ก ์ž๋™ํ™”


#PHP_FPM ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ์ธ์Šคํ„ด์Šค ์‹œ์ž‘๊ณผ ์ข…๋ฃŒ๋ฅผ ์ •ํ™•ํžˆ ๊ฐ์ง€ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด #Docker ๋‚˜ #Kubernetes ์™€ ๊ฐ™์€ #์ปจํ…Œ์ด๋„ˆ_์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Kubernetes ์‚ฌ์šฉ: Kubernetes๋Š” ๋‚ด์žฅ๋œ #DNS ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ๋ณ„๋„์˜ Consul์ด๋‚˜ Eureka ์—†์ด๋„ ์„œ๋น„์Šค ์ด๋ฆ„๋งŒ์œผ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” PHP ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ํ†ตํ•ฉ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


3.2. ์„ค์ • ๊ด€๋ฆฌ


๊ฐ PHP ์„œ๋น„์Šค๋Š” ํ™˜๊ฒฝ(๊ฐœ๋ฐœ/์Šคํ…Œ์ด์ง•/์šด์˜) ๋ฐ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ URL ๋“ฑ ๋‹ค์–‘ํ•œ ์„ค์ •์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ™œ์šฉ: PHP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ •์€ 12-Factor App ์›์น™์— ๋”ฐ๋ผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜(#Environment_Variables)๋ฅผ ํ†ตํ•ด ์ฃผ์ž…๋ฐ›๋Š” ๊ฒƒ์ด ํ‘œ์ค€์ž…๋‹ˆ๋‹ค.

  • ์ค‘์•™ ์„ค์ • ์ €์žฅ์†Œ: Consul์˜ #Key/Value ์ €์žฅ์†Œ์™€ ๊ฐ™์€ ์ค‘์•™ ์ง‘์ค‘์‹ ์„ค์ • ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  PHP ์„œ๋น„์Šค๊ฐ€ ์ผ๊ด€๋œ ์„ค์ •๊ฐ’์„ ์‚ฌ์šฉํ•˜๋„๋ก ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๊ณ ํ’ˆ์งˆ ์ฐฉํ•œ๊ฐ€๊ฒฉ ํ†ต์‹ ์‚ฌIP ๊ณ ์ •IP ์•ˆ์ „ํ•œVPN ์ดˆ๊ณ ์†VPN / ๊ฒŒ์ž„,๊ด‘๊ณ ,์šฐํšŒ์šฉ

https://xn--299ao67b9qbmsf04c.net/