Cloud Endpoints์์ API๋ฅผ ๊ด๋ฆฌํ๊ฒ ํ๋ ค๋ ๊ฒฝ์ฐ API๊ฐ ํธ์คํ ๋๋ ์์น์ API์์ ์ฌ์ฉํ๋ ํต์ ํ๋กํ ์ฝ์ ์ ํ์ ๋ฐ๋ผ ์ธ ๊ฐ์ง ์ต์ ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- OpenAPI์ฉ Cloud Endpoints
- gRPC์ฉ Cloud Endpoints
- App Engine ํ์ค ํ๊ฒฝ์ฉ Cloud Endpoints ํ๋ ์์ํฌ
์ด ํ์ด์ง์์๋ ์ด๋ ์ต์ ์ด ์ ํฉํ์ง ๊ฒฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋๋ก Endpoints ์ต์ ์ ์ค๋ช ํฉ๋๋ค.
์ปดํจํ ์ต์ ์ ํ
Endpoints๋ API์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ํธ์คํ ํ ์ ์๋ ๋ค์ํ Google Cloud ์ปดํจํ ์ต์ ์ ์ง์ํฉ๋๋ค. Endpoints๋ Extensible Service Proxy(ESP) ๋๋ Extensible Service Proxy V2(ESPv2)์ ํจ๊ป ์๋ํ์ฌ API ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ ์ง์๋๋ ์ปดํจํ ์ต์ ์ ์์ฝํ ํ์ ๋๋ค.
OpenAPI์ฉ ESP | gRPC์ฉ ESP | OpenAPI์ฉ ESPv2 | gRPC์ฉ ESPv2 | Endpoints ํ๋ ์์ํฌ | |
---|---|---|---|---|---|
App Engine ํ์ค ํ๊ฒฝ 1์ธ๋ |
์๋ฐ 8 ๋ฐ Python 2.7 ๋ฐํ์ | ||||
App Engine ํ์ค ํ๊ฒฝ 2์ธ๋ |
|||||
App Engine ๊ฐ๋ณํ ํ๊ฒฝ |
|||||
Cloud Run ํจ์ | |||||
Cloud Run | |||||
Knative serving | |||||
Compute Engine | |||||
GKE | |||||
Kubernetes | |||||
๊ธฐํ Google Cloud ์ธ |
App Engine, GKE, Compute Engine์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ ๋น๊ต๋ ์ปดํจํ ์ต์ ์ ํ์ ์ฐธ์กฐํ์ธ์. App Engine ์ฌ์ฉ์ ๊ณ ๋ คํ๊ณ ์๋ค๋ฉด ํ์ค ๋๋ ๊ฐ๋ณํ ํ๊ฒฝ์ ์ ํํด์ผ ํฉ๋๋ค. ๋ ํ๊ฒฝ ๋น๊ต๋ App Engine ํ๊ฒฝ ์ ํ์ ์ฐธ์กฐํ์ธ์.
์ปดํจํ ์ต์ ์ ํ ์ ๋ณด
OpenAPI์ฉ Endpoints์ gRPC์ฉ Endpoints๋ ESP ๋๋ ESPv2๋ฅผ ํ๋ก์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฒ๋ฆฌ์ค ์ธ์ ํ๋ซํผ์์ ESP ๋๋ ESPv2๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ปจํ ์ด๋๋ก ๋ฐฐํฌ๋๊ฑฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์ฌ์ด๋์นด๋ก ๋ฐฐํฌ๋ฉ๋๋ค. Cloud Run, Cloud Run ํจ์, App Engine๊ณผ ๊ฐ์ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ์์ ESPv2๋ ์๋ฒ๋ฆฌ์ค ํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์๊ฒฉ ํ๋ก์๋ก์ Cloud Run ์๋น์ค๋ก ๋ฐฐํฌ๋ฉ๋๋ค.
API์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ฐฐํฌํ ํ ESP ๋๋ ESPv2๋ ๋ชจ๋ ์์ฒญ์ ๊ฐ๋ก์ฑ๊ณ ๋ชจ๋ ํ์ํ ๊ฒ์ฌ(์: ์ธ์ฆ)๋ฅผ ์ํํ ํ์ ์์ฒญ์ API ๋ฐฑ์๋๋ก ์ ๋ฌํฉ๋๋ค. ๋ฐฑ์๋๊ฐ ์๋ตํ๋ฉด ESP๊ฐ ์๋น์ค ์ธํ๋ผ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฒฉ ๋ถ์ ์๋ฃ๋ฅผ ์์งํ๊ณ ๋ณด๊ณ ํฉ๋๋ค.
Google Cloud ์ฝ์์ Endpoints ์๋น์ค ํ์ด์ง์์ API ์ธก์ ํญ๋ชฉ๊ณผ Google Cloud Observability ๋ก๊ทธ ๋ฐ trace์ ๋ํ ๋งํฌ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
App Engine ํ์ค 1์ธ๋ ํ๊ฒฝ ์ ํ์ฌํญ
์ด์ ๋ถํฐ App Engine ํ์ค 1์ธ๋ ํ๊ฒฝ์ Endpoints๋ ์๋ฐ 8 ๋ฐ Python 2.7 ๋ฐํ์ ํ๊ฒฝ๋ง ์ง์ํ๋ Endpoints ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
Endpoints Frameworks์ ๊ฐ๋ฐ ๋จ๊ณ์์๋ App Engine ํ์ค ํ๊ฒฝ์ด ๋ค์ค ์ปจํ ์ด๋ ๋ฐฐํฌ๋ฅผ ์ง์ํ์ง ์์์ผ๋ฏ๋ก Endpoints Frameworks๋ ESP๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ Endpoints ํ๋ ์์ํฌ์๋ ESP๊ฐ OpenAPI์ฉ Endpoints ๋ฐ gRPC์ฉ Endpoints์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ ๋น์ทํ API ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ API ๊ฒ์ดํธ์จ์ด๊ฐ ๋ด์ฅ๋์ด ์์ต๋๋ค.
App Engine ๋๋ Cloud Run ํจ์์์๋ gRPC API๊ฐ ์ง์๋์ง ์์ต๋๋ค.
gRPC๋ ๋ชจ๋ ํ๊ฒฝ์์ ์คํ๋ ์ ์๋ ๋ฆฌ๋ชจํธ ํ๋ฌ์์ ์ฝ(RPC) ํ๋ ์์ํฌ์ ๋๋ค. gRPC๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ก์ปฌ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฅธ ๋จธ์ ์ ์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. gRPC์ ํต์ฌ ๊ธฐ๋ฅ์ HTTP/2 ๊ธฐ๋ฐ ์ ์ก์ ํตํ ์๋ฐฉํฅ ์คํธ๋ฆฌ๋ฐ์ ๋๋ค.
App Engine ๋ฐ Cloud Run ํจ์์์๋ HTTP/2๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
์ง์๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- OpenAPI ์ฌ์์ ์ธ์ด ์ค๋ฆฝ์ ์ฌ์์ ๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก API๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
- gRPC๋ C++, C#, Objective-C(iOS์ฉ), Dart, Go, ์๋ฐ(Android ์ง์ ํฌํจ), Node.js, Python, Ruby ๋ฑ์ ๋ง์ ์ฃผ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๋กํ ์ฝ ๋ฒํผ ์ปดํ์ผ๋ฌ์ธ
protoc
์ ์ ๊ณตํฉ๋๋ค. ์ต์ ๋ชฉ๋ก์ gRPC FAQ๋ฅผ ์ฐธ์กฐํ์ธ์. - Endpoints ํ๋ ์์ํฌ๋ ์๋ฐ 8๊ณผ Python 2.7๋ง ์ง์ํฉ๋๋ค.
API ์ค๋ช
Endpoints ์ต์ ์ API๋ฅผ ์ค๋ช ํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
OpenAPI์ฉ Endpoints
OpenAPI Initiative๋ REST API์ ์ค๋ช ์ ํ์คํํ๊ธฐ ์ํ ์ ๊ณ ์ฐจ์์ ๋ ธ๋ ฅ์ ์๋ฏธํฉ๋๋ค. Endpoints๋ OpenAPI ์ฌ์(์ด์ ์ Swagger ์ฌ์) ๋ฒ์ 2.0์ผ๋ก ์ค๋ช ๋ API๋ฅผ ์ง์ํฉ๋๋ค. API ๋ ธ์ถ ์์ญ์ OpenAPI ๋ฌธ์๋ผ๊ณ ํ๋ JSON ๋๋ YAML ํ์ผ๋ก ์ค๋ช ํฉ๋๋ค. Django ๋๋ Jersey์ ๊ฐ์ด ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ REST ํ๋ ์์ํฌ๋ก API๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. OpenAPI ์ฌ์์ ๋ํด ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ OpenAPI ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ธํ ๋ด์ฉ์ OpenAPI์ฉ Endpoints๋ฅผ ์ฐธ์กฐํ์ธ์.
gRPC์ฉ Endpoints
gRPC๋ฅผ ์ฌ์ฉํ์ฌ proto ํ์ผ์ ์ง๋ ฌํํ๋ ค๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค. ์ด ํ์ผ์ ํ์ฅ์๊ฐ .proto
์ธ ์ผ๋ฐ ํ
์คํธ ํ์ผ์
๋๋ค. ๋ํ ํ๋กํ ์ฝ ๋ฒํผ ๋ฉ์์ง๋ก ์ง์ ๋ RPC ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ๋ฐํ ์ ํ์ ์ฌ์ฉํ์ฌ proto ํ์ผ์์ API ๋
ธ์ถ ์์ญ์ ์ ์ํฉ๋๋ค. gRPC๋ฅผ ์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ gRPC ๋ฌธ์์ gRPC๋?์
์ฐธ์กฐํ์ธ์.
์์ธํ ๋ด์ฉ์ gRPC์ฉ Endpoints๋ฅผ ์ฐธ์กฐํ์ธ์.
Endpoints ํ๋ ์์ํฌ
Endpoints ํ๋ ์์ํฌ๋ App Engine ํ์ค Python 2.7 ๋ฐ Java 8 ๋ฐํ์ ํ๊ฒฝ์ ์ํ ์น ํ๋ ์์ํฌ์ ๋๋ค. ์๋ฐ์ ์ฃผ์์ด๋ Python์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์์ค ์ฝ๋์ ์ถ๊ฐํฉ๋๋ค. ๋ฉํ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฉ REST API์ ๋ ธ์ถ ์์ญ์ ์ค๋ช ํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ Endpoints ํ๋ ์์ํฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
Endpoints ๊ธฐ๋ฅ ์๋์ ํ์ธํ๋ ค๋ฉด Cloud Endpoints ๋น ๋ฅธ ์์์ ์ฐธ์กฐํ์ธ์. ์ด ๋ฌธ์์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ App Engine ๊ฐ๋ณํ ํ๊ฒฝ์ ์ํ API๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
์ ํํ Endpoints ์ต์ ์ ๋ํ ๋ค์ ๊ฐ์ด๋ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ ๋จ๊ณ๋ฅผ ์ตํ์ธ์.
Endpoints์ ESP์ ๋ํด ์์ธํ ์์๋ณด์ธ์.