1. Деплой Spring Boot в AWS
Вариант 1: AWS Elastic Beanstalk Проще всего → берёт твой jar/war и разворачивает.📌 Команда:
eb init -p java-17 demo-app
eb create demo-env
eb deployВариант 2: AWS ECS (контейнеры)
- Собираем Docker-образ.
- Загружаем в Amazon Elastic Container Registry (ECR):
aws ecr create-repository --repository-name demo-app
docker tag demo-app:latest <aws-account-id>.dkr.ecr.region.amazonaws.com/demo-app:latest
docker push <aws-account-id>.dkr.ecr.region.amazonaws.com/demo-app:latest- Запускаем в ECS (Fargate).
Вариант 3: AWS EKS (Kubernetes)
- Поднимаем кластер EKS.
- Деплоим как обычный Kubernetes-манифест (см. блок DevOps).
2. Деплой Spring Boot в GCP
Вариант 1: Google App Engine 📌 app.yaml:
runtime: java17
instance_class: F1Загрузка:
gcloud app deployВариант 2: Google Cloud Run (Serverless Containers)
- Берёт Docker-образ.
- Скейлит от 0 до N (zero-cost, пока нет трафика).
gcloud run deploy demo-app --image gcr.io/PROJECT-ID/demo-app --platform managedВариант 3: GKE (Google Kubernetes Engine)
- Деплой как обычный K8s + Helm.
3. Деплой Spring Boot в Azure
Вариант 1: Azure App Service
- Загружаешь jar/Docker-образ.
- Azure сама запускает.
Вариант 2: Azure AKS (Kubernetes)
- Аналог GKE/EKS.
- Helm charts работают из коробки.
Вариант 3: Azure Functions (Serverless)
- Если приложение можно порезать на функции → Spring Cloud Function.
4. Kubernetes Helm Charts
📌 Helm = менеджер пакетов для Kubernetes.
📄 Chart.yaml:
apiVersion: v2
name: demo-app
version: 0.1.0📄 values.yaml:
replicaCount: 2
image:
repository: demo-app
tag: latest
service:
type: LoadBalancer
port: 80📌 Установка: helm install demo ./charts/demo-app
5. Spring Cloud Config
📌 Для централизованной конфигурации (одна конфигурация для множества сервисов).
Config Server 📄 Зависимость:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>📄 Запуск:
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}📄 application.yml:
spring:
cloud:
config:
server:
git:
uri: https://github.com/my-org/config-repoКлиент 📄 Зависимость:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>📄 bootstrap.yml:
spring:
application:
name: demo-app
cloud:
config:
uri: http://localhost:8888Теперь настройки берутся из git**-репозитория конфигов**.
6. Serverless + Spring
📌 Через Spring Cloud Function можно писать лямбды.
Пример AWS Lambda:
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}📌 Деплой в AWS Lambda через адаптер spring-cloud-function-adapter-aws.
7. CI/CD в облаке
- AWS → CodePipeline / CodeBuild.
- GCP → Cloud Build.
- Azure → DevOps Pipelines.
- Везде можно использовать GitHub Actions (самый популярный вариант).
8. Best Practices
- ✅ Для MVP → Heroku, App Engine, Cloud Run (быстро и просто).
- ✅ Для enterprise → Kubernetes (EKS/GKE/AKS) + Helm + Spring Cloud Config.
- ✅ Храни секреты в Vault / Secret Manager / Kubernetes Secrets.
- ✅ Разделяй окружения (dev/test/prod) и конфиги.
- ✅ Используй observability стек (Prometheus + Grafana + Loki/ELK).
- ✅ Делай blue-green или canary deploys → безопасные обновления.