Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
GitHub Copilot for Azure plugin providing Azure service management and development assistance inside Claude Code and IDEs.
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