mirror of
				https://github.com/3ybactuk/marketplace-go-service-project.git
				synced 2025-10-31 06:23:44 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Домашнее задание по модулю "Многопоточное программирование"
 | ||
| 
 | ||
| ## Основное задание
 | ||
| 
 | ||
| Уменьшить время ответа cart.list.
 | ||
|     - Распараллельные вызовы ручки http://route256.pavl.uk:8080/docs/#/ProductService/ProductService_GetProduct продакт
 | ||
|       сервиса
 | ||
|     - Самим написать аналог https://pkg.go.dev/golang.org/x/sync/errgroup и использовать его
 | ||
|     - В случае ошибки - отменять все текущие запросы и вернуть ошибку из errgroup
 | ||
|     - При общении с Product Service необходимо использовать лимит 10 RPS на клиентской стороне
 | ||
|     - Группа живет в рамках одного запроса = группа не переиспользуется между запросами
 | ||
|     - in-memory репозитории защитить мьютексами
 | ||
| 
 | ||
| ## Дополнительное задание
 | ||
| 
 | ||
| - Тесты на многопоточность in-memory репозитория
 | ||
| - Грейсфул завершение приложения (использовать signal.Notify)
 | ||
| - Контроль утечек (горутин через https://github.com/uber-go/goleak)
 | ||
| - Контроль рейзов (через тесты с флагом -race)
 | ||
| - Реализовать параллельный запуск тестов
 | ||
| 
 | ||
| ## Автоматические проверки
 | ||
| 
 | ||
| Ваше решение должно проходить автоматические проверки:
 | ||
| 
 | ||
| - Компиляция
 | ||
| - Линтер
 | ||
| - Unit-тесты
 | ||
| - Code coverage >40%
 | ||
| - Автотесты
 | ||
| 
 | ||
| Прохождение автоматических проверок влияет на итоговую оценку за домашнюю работу.
 | ||
| 
 | ||
| ### Дедлайны сдачи и проверки задания:
 | ||
| - 28 июня 23:59 (сдача) / 1 июля, 23:59 (проверка)
 | 
