Перейти к содержимому

Merlion

  • Как выглядел флоу в команде? Когда задача считается завершенной? hr-behavioral/teamwork
  • Как происходил процесс создание новых фич? Насколько сильно декомпозировали задачу? Были ли фичи на несколько спринтов? linux-os/processes
  • Какая была самая большая фича? Были ли задачи более чем на один спринт? hr-behavioral/about-you
  • Допустим, приходит тимлид и говорит: «Нужна такая фича», но я понимаю, что для нее нужен новый микросервис, новое взаимодействие между микросервисами или новая технология. Что делали? architecture/microservices
  • Кто деплоил? hr-behavioral/teamwork
  • Зачем DevOps, если CI настроен и мы сами можем нажимать кнопку? devops/ci-cd
  • Деплоили сразу по факту? hr-behavioral/teamwork
  • Были ли релизные даты? hr-behavioral/teamwork
  • Ответственность разработчика до какого момента по задаче сохранялась? hr-behavioral/teamwork
  • В prod мы деплоили или DevOps? hr-behavioral/teamwork
  • Пулл-реквест прошел, код-ревью прошло. Кто мержил в релизную ветку? git/general
  • Технические метрики: нагрузка. Кто за ними следил? devops/observability
  • DevOps смотрит и видит, что упираемся в CPU. Код написан нормально. Нужно масштабироваться. Что делать? architecture/system-design
type Storage interface{
Products(products[]string) ([]*Products, error)
Compilations(ctx context.Context, productIds[]string) ([]*Compilations, error)
}
/* domain package */
type Products struct{
Id int
CreatedAt uint8
}
type Compilations struct{
ProductId int
MinPrice float64
MaxPrice float64
}
type ProductWithCompilations struct{
Id CreatedAt
int uint8
Compilations[]*Compilations
}
/* transport package */
type GetRequest struct{
Ids[]string
}
type GetResponse struct{
ProductWithCompilations[]*ProductWithCompilations
}
type Server struct{
storage Storage
}
/* transport package */
type GetRequest struct{
Ids[]string
}
type GetResponse struct{
ProductWithCompilations[]*ProductWithCompilations
}
type Server struct{
storage Storage
}
func(s*Server) SearchBywords(ctx context.Context, request*GetRequest) (*GetResponse, error) {
var errChan chan error
var products[]*Products
go func() {
result, err:=s.storage.Products(request.Ids)
if err!=nil{
errChan<-err
return
}
products= result
}()
var compilations[]*Compilations
go func() {
result, err:=s.storage.Compilations(context.Background(), request.Ids)
if err!=nil{
errChan<-err
return
}
comilitations= result
}()
for err:=range errChan{
if err!=nil{
return nil, err
}
}
result:=[]*ProductWithCompiliation()
for _, product:=range products{
for _, compilation:=range compilation{
if compilation.ProductId==product.id{
result= append(result, &ProductWithCompiliation{id: product.Id, createdAt: product.CreatedAt, Complitations: []*Complitations{compiliation}})
}
}
}
return&GetResponse(ProductWithCompilations: result), nil
}