…so at my employ we are attempting to deploy a micro-service style application and thus enjoy all the new hotness that comes with it. The technical issues we are now running into is the deployment for each facet of the application is requiring a different deployment strategy. A quick breakdown is as follows:
- Middleware: Post test pass push artifact to S3. Trigger CodeDeploy and deploy to EC2 instances as part of an auto-scaling group.
- Frontend: Static content (HTML/JS/CSS) wherein API calls are requested against the middleware layer, push artifact to S3, trigger Lambda to pull package, unpack to S3, invalidate CloudFront cache
- Backend: See frontend + handle authentication of user accounts
- Media Processing: When media is PUT onto S3 trigger Lambda to process media and update database once complete.
- Application Monitoring: Via in house manage installation of Sentry (they are awesome by the way, you should check it out).
All of this, and this is not even getting into the roles and actions that have to be performed for each environment. The cherry on top: is for the v1.x release of the project. While it enable our clients and in turn there clients to access the application data layer via the middleware and skin the user experience (UX) to desire; the implementation of has a learning curve.
Lesson: If your going micro-service, plan your deployment process VERY carefully ahead of time.