Załóżmy, że nasza aplikacja wystawia jakieś REST API np /v1/...
. Do tego mamy endpointy do diagnostyk np. prometeuszowe metryki /metrics
, w go jest np. /debug/pprof/
do zbierania danych wystawionych przez runtime itd.
I teraz pytanie. Czy w waszych aplikacjach rozgraniczacie te dwa typy endpointów na osobne porty czy może wszystko ładuje do jednego serwera?
Zalety jakie widzę przy takim podziale:
- security, klientowi wystawiamy tylko produkcyjny endpoint, więc nie ma opcji, że jakimś cudem dostanie się do np. metryk
- to akurat techniczny problem: w go nie można w łatwy sposób ustawić timeoutów na tym samym serwerze HTTP przez co możemy mieć problem, gdy chcemy ustawić jakąś logiczną wartość dla
/v1/...
a jednocześnie chcemy czytać CPU profile przez kilka godzin.
Wady:
- wiadomo, więcej portów, większy burdel