How Microservices Change the Way of Developing Applications

Microservices are gaining popularity for their potential to deliver scalability, resilience, and agility that wasn't possible with service-oriented architecture. Over 70% of organizations are investigating microservices adoption, but many are encountering challenges to success in achieving these goals with the additional strain on IT to be more agile, adopt new technology, and embrace DevOps.
The Open Group defines Microservices Architecture (MSA) as "a style of architecture that defines and creates systems through the use of small independent and self-contained services that align closely with business activities." In contrast to monolithic applications, where deployed software and infrastructure are centralized, MSA is highly distributed and requires new approaches to the development lifecycle as well as infrastructure monitoring and management.
"In particular with microservices, there are serious consequences for operations, who now have to handle an ecosystem of small services rather than a single, well-defined monolith. Consequently, if you don't have a certain baseline competencies, you shouldn't consider using the microservice style." He goes on to list the need for rapid provisioning, basic monitoring and rapid application deployment as prerequisites for microservices.
But the changes within IT needed for MSA is greater than just operations. A survey of over 2,000 software engineers by Lightbend found the greatest obstacle to microservice adoption was corporate culture - as cited by 46% of respondents. Also, the immaturity of operations tools was listed as a concern for 34% of IT professionals. A culture shift to an Agile development lifecycle and a DevOps approach is needed for MSA to achieve the goals of scalability, resilience, and agility. And the operational tools needed to monitor and manage microservices must be integrated as part of the underlying platform architecture.
Given the complexity of MSA and the need for an IT culture shift to implement microservices, it is helpful to assess where you are on your MSA journey and make plans to mature your MSA related people, processes and platforms. The following sets of criteria can be used to assess your current MSA capabilities and to develop a roadmap, maturity model and KPIs needed for improvement.
MSA Platform Assessment
Many IT organizations lack or have gaps in the culture and processes needed for MSA. Criteria to assess IT organization and governance include:
• IT alignment to business drivers and imperatives
• Roadmap for legacy systems and data - modernization, cloud-native, and monolith migration
• Agile development lifecycle
• Engineering skills and skill gaps
• CI/CD automation and a DevOps culture
• Test first and API first development approaches
• API management and light-weight governance
MSA requires a platform for building and operating cloud-native services that automate and integrates the concepts of DevOps, continuous delivery and containers. Criteria to assess platform architecture capabilities includes:
• Service provisioning and auto-wiring
• Service discovery
• Elastic scaling
• Resource scaling
• Integration with the infrastructure
• Multi-node cluster configuration and management
• High-availability
• Security issues like single sign-on
• Multi-tenancy and isolation
• Monitoring
• Logging
• Routing
• Load balancing
• Instant rollback and versioning
• Service naming and URL mapping
• Polyglot language and persistence support
• Authentication service integration
• Application configuration management
• Orchestration
API management is a critical component for MSA to manage secure assess, monitor component availability and enforce governance and change management. Criteria to assess API management capabilities includes:
• Developer Portal
• Administrative Portal
• Security
• Traffic management
• Transformation
• Proxy
• Analytics
• Versioning
• Lifecycle management
• Metadata Documentation / Content Management
• Social media support/blogs
• Throttling
• Service level management
Perficient's Microservices Health Check
Perficient has built a practical approach to implementing microservices. We create a roadmap to modernize and mature IT people, process, and platforms needed for effective microservices strategy. To this end, we have developed a Microservices Heath Check to assess IT's current state and make a series of actionable recommendations within program tracks to modernize IT for microservices.
The intent of the health check is to create a set of actionable tasks to get microservices processes and projects on track to ensure you achieve the desired technical and business objectives. The Microservice Health Check provides the following benefits:
• Solidifies the microservices business case
• Provides a benchmark of your current microservices approach to industry best-in-class
• Validates architecture concerns such as platform capabilities, security, operations, and API management
• Helps to define your microservices roadmap to mature people, process, and platforms along program tracks
• Leverages Perficient's microservices architecture, agile methodology, and DevOps guidelines
• Delivers a set of actionable tasks to get your microservices to program on track

related blog:

[Java collection tutorial](http://candidjava.com/tutorial/collections-in-java-with-examples/)