Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/strider2038/otus-micro-5
https://github.com/strider2038/otus-micro-5
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/strider2038/otus-micro-5
- Owner: strider2038
- License: mit
- Created: 2022-01-07T10:21:56.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2022-01-22T17:36:13.000Z (almost 3 years ago)
- Last Synced: 2023-03-10T12:57:42.337Z (almost 2 years ago)
- Language: Go
- Size: 2.16 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Otus Microservice architecture Homework 6
## Домашнее задание выполнено для курса ["Microservice architecture"](https://otus.ru/lessons/microservice-architecture/)
### Теоретическая часть
[Исследование вариантов реализации системы](docs/design.md).
Для реализации выбран гибридный вариант (REST + Event collaboration). Для упрощения сервисы объединяют в себе
HTTP серверы и Kafka Consumer'ы, поэтому масштабирование подов ограничено количеством партиций топиков в Kafka.### Запуск приложения
```shell
# запуск minikube
# версия k8s v1.19, на более поздних есть проблемы с установкой ambassador
minikube start --cpus=6 --memory=16g --disk-size='40000mb' --vm-driver=virtualbox --cni=flannel --kubernetes-version="v1.19.0"kubectl create namespace otus
kubectl config set-context --current --namespace=otus# установка Ambassador
helm install aes datawire/ambassador -f deploy/ambassador-values.yaml# установка Apache Kafka
helm install kafka bitnami/kafka -f deploy/kafka-values.yaml## запуск проекта
helm install --wait -f deploy/identity-values.yaml identity-service ./services/identity-service/deployments/identity-service --atomic
helm install --wait -f deploy/billing-values.yaml billing-service ./services/billing-service/deployments/billing-service --atomic
helm install --wait -f deploy/order-values.yaml order-service ./services/order-service/deployments/order-service --atomic
helm install --wait -f deploy/notification-values.yaml notification-service ./services/notification-service/deployments/notification-service --atomic# применение настроек ambassador
kubectl apply -f services/ambassador/
```### Тестирование
Тесты Postman расположены в директории `test/postman`. Запуск тестов.
```bash
newman run ./test/postman/test.postman_collection.json
```Или с использованием Docker.
```bash
docker run -v $PWD/test/postman/:/etc/newman --network host -t postman/newman:alpine run test.postman_collection.json
```### Отладка
```shell
# отладка kafka consumer
kubectl run kafka-client --restart='Never' --image docker.io/bitnami/kafka:2.8.1-debian-10-r73 --namespace otus --command -- sleep infinity
kubectl exec --tty -i kafka-client --namespace otus -- bash
kafka-console-consumer.sh \
--bootstrap-server kafka.otus.svc.cluster.local:9092 \
--topic \
--property print.headers=true \
--from-beginning
# отладка postgres
kubectl port-forward svc/identity-service-postgresql 5432:5432
```