https://github.com/Alikhll/golang-developer-roadmap Часто требуется Kubernetis, GraphQL
См. https://github.com/Alikhll/golang-developer-roadmap Освоить по одной штуке из каждой ветви хорошо бы
https://github.com/Alikhll/golang-developer-roadmap Часто требуется Kubernetis, GraphQL
См. https://github.com/Alikhll/golang-developer-roadmap Освоить по одной штуке из каждой ветви хорошо бы
В вызывающем сервисе ошибки от запрашиваемого сервиса должны оборачиваться в местные подходящие ошибки (https://softwareengineering.stackexchange.com/questions/351047/upstreaming-microservices-errors)
Предлагаю использовать https://tools.ietf.org/html/rfc7807
{
Status: 400|500|401|403
Path: /api/v1/merchants
Errors: [
<scheme name="Material Palenight (r3code)" version="142" parent_scheme="Darcula"> | |
<option name="FONT_SCALE" value="1.0" /> | |
<metaInfo> | |
<property name="created">2021-03-27T17:27:10</property> | |
<property name="ide">GoLand</property> | |
<property name="ideVersion">2020.3.4.0.0</property> | |
<property name="modified">2021-03-27T17:27:46</property> | |
<property name="originalScheme">Material Palenight (r3code)</property> | |
</metaInfo> | |
<option name="LINE_SPACING" value="1.1" /> |
ENV_NAME=some_branch
POD_NAME=`kubectl get pods -n $ENV_NAME | grep pod_name_part- | head -n 1 | awk '{print $1}'`; print $POD_NAME
kubectl exec -n $ENV_NAME $POD_NAME -- /app/appctl arg1 arg2
Используем protobuff версии 3 https://developers.google.com/protocol-buffers/docs/proto3
Придерживаемся стиля https://developers.google.com/protocol-buffers/docs/style
Если вы удалили поля message определенные ранее, то для сохранения совместимости, их номера должны быть помечены как reserved, чтобы их нельзя было использовать повторно после.
Поддержка версионирования API - см. https://google.aip.dev/215
Переиспользуем готовые определения часто используемых типов (время, деньги, дата и др.) см. https://google.aip.dev/213
// import gihub.com/pkg/errors | |
// Stack returns the last error in the error chain implementing StackTrace() or nil iа no errors with stack trace | |
func Stack(err error) errors.StackTrace { | |
type ( | |
causer interface { | |
Cause() error | |
} | |
stackTracer interface { | |
StackTrace() errors.StackTrace | |
} |
package version | |
import ( | |
"bytes" | |
"fmt" | |
"runtime" | |
"strings" | |
"github.com/prometheus/client_golang/prometheus" | |
) |
Read about RDD here https://vporoshok.me/post/2019/10/rdd/
Russian version here
So, are you building microservices? Take a look at a few of these symptoms, and decide for yourself:
Из статьи You're not actually building microservices
Итак, вы создаете микросервисы?
Взгляните на некоторые из этих симптомов и проставьте галочки, где вы согласны: