Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Assess and migrate workloads from AWS, GCP, or other clouds to Azure services.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/services/container-apps/spring-assessment-guide.md
1# Pre-Migration Assessment for Spring Boot to Azure Container Apps23## Local State Assessment45| Issue | Impact | Solution |6|-------|--------|----------|7| Singleton patterns | Multiple instances may run during updates | Refactor to stateless design |8| In-memory sessions | Lost during restarts/scaling | Migrate to Azure Cache for Redis |9| Local caching | Not shared across replicas | Use Azure Cache for Redis with Spring Data Redis |10| File-based state | Lost on restart | Migrate to Azure Cosmos DB, Azure SQL, or Azure Storage |1112**State Migration Options:**13- **Azure Cache for Redis**: Session data, distributed caching14- **Azure Cosmos DB**: NoSQL data, document storage15- **Azure SQL/MySQL/PostgreSQL**: Relational data16- **Azure Storage Blobs**: Unstructured data, serialized objects1718## File System Usage1920| Pattern | Container Apps Solution |21|---------|------------------------|22| Temporary files | Ephemeral storage (automatic, deleted on restart) |23| Shared persistent data | Azure Files storage mounts |24| Static content serving | Azure Blob Storage + Azure CDN |25| User uploads | Azure Blob Storage with Azure Function triggers |2627## Platform Compatibility2829### Supported Java Versions30- **For Spring Boot 2.x source apps**: Java 8 or 11 supported for assessment31- **For Spring Boot 3.x target apps**: Java 17 or 21 required (verify with `java -version`)3233### Spring Boot Version Requirements34- **Recommended target**: Spring Boot 3.x (requires Java 17+)35- **Supported source**: Spring Boot 2.x on Java 8/11 → plan upgrade to Java 17+ and follow [Spring Boot 3.0 Migration Guide](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Migration-Guide)3637### Spring Cloud Compatibility38- Verify Spring Cloud version matches Spring Boot 3.x requirements39- See [Spring Cloud versions](https://spring.io/projects/spring-cloud#overview)4041## External Resources Inventory4243Inventory all external dependencies. See [spring-dependency-patterns.md](spring-dependency-patterns.md) for configuration examples (databases, message brokers, caches).4445### Identity Providers4647| Provider | Configuration |48|----------|---------------|49| OAuth2 | Spring Security reference docs |50| Auth0 | Auth0 Spring Security documentation |51| PingFederate | Spring Security SAML 2.0/OIDC docs, PingIdentity docs |52| Microsoft Entra ID | Update redirect URIs to new Container Apps FQDN |5354## Scheduled Jobs Assessment5556| Job Type | Container Apps Solution |57|----------|------------------------|58| Unix cron jobs | Azure Container Apps Jobs (ephemeral) |59| Spring Batch tasks | Azure Container Apps Jobs |60| Quartz scheduler | Long-running app (handle scale-out race conditions) |61| Scheduled @Scheduled methods | Long-running app (handle multiple instances) |6263## Configuration & Secrets6465### Port Configuration66- Default: 808067- Change via `server.port` or `SERVER_PORT` environment variable68- Configure in Container Apps ingress settings6970### Secrets Checklist711. Inventory all secrets in application.properties/application.yml722. Document database passwords, API keys, connection strings733. Plan migration to Azure Key Vault744. Update app to use Key Vault references or environment variables7576### Certificates77- Run `keytool -list -v -keystore <path>` to document SSL certificates78- Plan migration to Azure Key Vault or Container Apps managed certificates7980## Deployment Architecture8182**Document current state:**83- Number of instances84- CPU per instance (vCPU)85- RAM per instance (GiB)86- Regional distribution87- Uptime requirements/SLA8889**Container Apps Limits:**90- Max 4 vCPU per container91- Max 8 GiB RAM per container92- Max 300 replicas per revision9394## Assessment Checklist9596- [ ] Identified all local state and planned migration to external storage97- [ ] Reviewed file system usage and selected storage solution98- [ ] Verified Java version compatibility (17+ for Spring Boot 3.x target; 8/11 for source assessment only)99- [ ] Confirmed Spring Boot 3.x or planned upgrade100- [ ] Inventoried databases (MySQL, PostgreSQL, MongoDB, Cosmos DB)101- [ ] Inventoried message brokers (ActiveMQ, IBM MQ, Azure Service Bus)102- [ ] Inventoried external caches (Redis)103- [ ] Documented identity providers (OAuth2, SAML, Entra ID)104- [ ] Identified scheduled jobs and selected execution model105- [ ] Listed all configuration secrets for Key Vault migration106- [ ] Documented SSL certificates107- [ ] Recorded current deployment architecture (instances, CPU, RAM)108- [ ] Reviewed logging configuration (console vs. file)109- [ ] Identified APM tools (Application Insights, custom agents)110111## Complexity Guidelines112113**Low Complexity:**114- Stateless Spring Boot app with external database115- No scheduled jobs or simple @Scheduled tasks116- Standard Java version (11, 17, 21)117- OAuth2/SAML authentication118119**Medium Complexity:**120- In-memory session state requiring Redis migration121- File system writes requiring Azure Files or Blob Storage122- Spring Boot 2.x requiring upgrade to 3.x123- Message broker integration (ActiveMQ, Service Bus)124- Scheduled jobs requiring Jobs configuration125126**High Complexity:**127- Multiple stateful components (local cache, sessions, file storage)128- Custom JVM agents or APM integrations129- Java 8 requiring upgrade to 11+130- Complex scheduled jobs with coordination requirements131- Multi-region deployment with traffic distribution132- Custom identity provider federation133