Architect enterprise-ready solutions from the get-go
An enterprise architectural approach is preferred in considering all areas of the business. Even solutions that start small, can easily adapt and grow to enterprise scale and integrate under a common metaphor with other potential targets for transformation within the organization.
Microservices accessed through standardized APIs are a key component of digital transformation. APIs securely expose assets and data to developers and analysts, allowing them to innovate, extend, and optimize the use of enterprise resources. Enterprises often have legacy monolithic applications that may not effectively utilize newer technologies. A major part of modern digital transformation is to upgrade, modernize, and re-write these monolith applications in terms of microservices to best utilize the new technologies.
Microservices structure an application as a collection of API-driven services that are:
- Organized around a specific business capability
- Loosely coupled with other services
- Deployable independently
- Highly maintainable and testable
- Owned by a small team
- Expose an API for 3rd parties to consume, providing the only access to the capability
- Observable through cross-service dashboards that show a sequence of related events
In addition, the following services facilitate and act as building blocks for a transformation to a microservices-based solution:
Single Sign-On and Federated Identity Management
- Minimize obstacles in the user experience
- User authentication
- Delegated user authorization
- Centralized user management
- Fine-grained enterprise-wide access control
Event Driven Architecture: Coordinate services together using events
- Event Notification, with lightweight messages to notify other systems of a change in its domain, and consumer contacts referenced service API
- Event-Carried State Transfer, with events hydrated with enough state so that the consumer can update without further API contact
- Event Sourcing, that allows for a persistent, immutable log of events representing the source of truth for enterprise data
Cloud Native Architecture: Focus on optimized system architectures for the unique capabilities of the cloud
- Design for automation
- Infrastructure as code
- CI/CD deployment pipelines
- Scale up and scale down
- Monitor and automate recovery
- Be smart with state
- Design components to be stateless when possible
- Be intentional about when, where, and how, you store state
- Strive for a single source of truth
- Favor high-level and managed services
- Prefer open-source or open source-compatible managed services
- Prefer non-open-source managed services that deliver high operational savings
- Prefer serverless for small or infrequent workloads
- Standardize on containerized deployments
- Common language between DevOps and Dev
- Orchestrated to be elastic
- Describe infrastructure as code
- Favor cloud provider agnostic services
- Practice defense-in-depth
- Apply authentication between each component
- Authorize based on who is doing the asking rather than what application
- Minimize implicit trust between components
- Continuous architecting
- Able to respond to new threats and new capabilities
- Illustrate the benefits and drawbacks of a Microservices-based approach if your organization is evolving from a monolith
- Identify and work with other parts of the organization that could benefit from sharing services through elimination of redundancy
- Choose a technology partner who will bring best-in-class tools and techniques
- Plan on an evolutionary process
- Do you know what you are trying to achieve by adopting a Microservice Architecture?
- Is your organization willing to invest the time, effort, and money to realize the benefits of Microservices?
- Do you know your business domain inside and out?
- Can you identify the bounded context for each discrete business capability?
- Is your organization willing to support Microservices through needed changes in governance?