์จ๋ผ์ธ ๊ฐ์
>PHP - ์ต์๊ธ
๐ 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)
API ๊ฒ์ดํธ์จ์ด๋ ํด๋ผ์ด์ธํธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํต์ ์ ๋ด๋นํ๋ ๋จ์ผ ์ง์ ์ ์ญํ ์ ์ํํฉ๋๋ค. ์ ํต์ ์ธ #๋ชจ๋๋ฆฌ์_์ํคํ ์ฒ ์์๋ ์น ์๋ฒ๊ฐ ์ด ์ญํ ์ ํ์ง๋ง, MSA์์๋ ๊ฒ์ดํธ์จ์ด๊ฐ ๋์ฑ ์ง๋ฅ์ ์ธ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค. ๐ช
1.1. API ๊ฒ์ดํธ์จ์ด์ ์ฃผ์ ๊ธฐ๋ฅ
๊ธฐ๋ฅ | ์ค๋ช | MSA์์์ ์ค์์ฑ |
|---|---|---|
๋ผ์ฐํ (Routing) | ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์ ์ ํ #๋ง์ดํฌ๋ก์๋น์ค ๋ก ์ ๋ฌํฉ๋๋ค. (์: | ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๋ณ ์๋น์ค์ 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. ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ์ ํ
2.2.1. ์๋ฒ ์ธก ๋์ค์ปค๋ฒ๋ฆฌ (Server-Side Discovery)
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํจํด์ ๋๋ค.
#์๋น์ค_๋ฑ๋ก (Service Registration): ๊ฐ ์๋น์ค ์ธ์คํด์ค๊ฐ ์์๋ ๋ ์์ ์ ๋คํธ์ํฌ ์์น๋ฅผ ์ค์์ #์๋น์ค_๋ ์ง์คํธ๋ฆฌ (#Consul, #Eureka, #ZooKeeper ๋ฑ)์ ๋ฑ๋กํฉ๋๋ค.
#์๋น์ค_์กฐํ (Service Lookup): ํด๋ผ์ด์ธํธ (์ฃผ๋ก API ๊ฒ์ดํธ์จ์ด)๊ฐ ๋ ์ง์คํธ๋ฆฌ์ ์๋น์ค ์ด๋ฆ์ผ๋ก ์ฟผ๋ฆฌํ์ฌ ์ค์ IP ์ฃผ์์ ํฌํธ๋ฅผ ์ป์ต๋๋ค.
#์์ฒญ_์ ๋ฌ: ๊ฒ์ดํธ์จ์ด๊ฐ ์ด ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์๋น์ค ์ธ์คํด์ค์ ์ ๋ฌํฉ๋๋ค.
2.2.2. ํด๋ผ์ด์ธํธ ์ธก ๋์ค์ปค๋ฒ๋ฆฌ (Client-Side Discovery)
ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์กฐํํ์ฌ ์๋น์ค ๋ชฉ๋ก์ ์ป๊ณ , ์ค์ค๋ก ๋ถํ ๋ถ์ฐ์ ์ํํฉ๋๋ค.
PHP ์ ์ฉ: PHP ์๋น์ค ๋ด๋ถ์์ Consul/Eureka ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ PHP ์๋น์ค์ ์์น๋ฅผ ์ง์ ์กฐํํ๊ณ ํธ์ถํ ์ ์์ต๋๋ค. ์ด๋ ์ค์ ๊ฒ์ดํธ์จ์ด ์์ด ์๋น์ค ๊ฐ์ ํต์ (Service-to-Service Communication)์ ํ ๋ ์ ์ฉํฉ๋๋ค.
3. PHP์์ MSA ์ธํ๋ผ ํตํฉ ์ ๋ต
#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/