Implementing microservices in an uncertain world.
Microservices promise many benefits to organizations. More productive teams, improved scalability and resiliency, frequent and flexible deployments, and software that is well-aligned with business needs are frequently cited as reasons to adopt a microservices architecture. We agree these are all potential wins and believe microservices can be a great solution when applied to the right problems. But along with learning new technologies there are risks that should be anticipated and addressed, and new ways of working to be defined and adopted in order to address those risks and assure success.
Whether you are just considering moving to microservices or work is already underway, here are a few questions to ask yourself about your organization:
- Do you have a reliable CI/CD pipeline?
- Are you confident you can lead your business stakeholders from product concept through a domain-driven design?
- What about testing to assure the system works as expected both within and across services and does so after every deployment?
- Do you have a plan for live testing, monitoring, and management?
We find that many teams cannot confidently answer “yes” to these and other questions that help assess key risks to project and product success.
A new factor to consider is the sudden shift to a fully remote work force as we all adapt to the changes brought on by the COVID-19 pandemic. The good news is that the microservices model is built on the idea of autonomous teams, but in our experience, it is important to find the right balance between autonomy and disciplined decision-making when it comes to architecture, design, and tools. There are also critical times the team needs to come together. What’s the best way to hold whiteboard design sessions without a whiteboard? And how do you assure that more junior team members stay on track with new methods and tools?
For more of IfThen’s perspectives on software engineering using current architectures including microservices, please contact us or download one of the white papers below.
What follows is a selection of key risks you may face and services IfThen can offer to help you mitigate them and realize the benefits of microservices.
Building the wrong thingSigns you may be building the wrong product include a lack of clarity on what needs to be developed, business stakeholders looking for other options, and delivery teams and service boundaries that don’t mirror your businesses organization and its communication paths. To help combat these risks IfThen can:
- Work with you to analyze your business needs using domain-driven design and other modern techniques and tools
- Lead event storms or other facilitated analysis and design sessions either at your location or remotely
- Work as the bridge between product development and delivery including product validation, technical program management, requirements development and management, and other services
Building the right thing but in the wrong wayAre your services autonomous but also working together as expected? Are they reliable and scaling as needed in production? Do you have strong test coverage at multiple levels? If the answer to any of these questions is “no”, we can help you:
- Find the right balance of team autonomy and standard approaches to ensure success and manage cost and complexity
- Select and instill a collective understanding of key microservices design patterns: command/event, resiliency, event sourcing, etc.
- Define and implement a multi-level testing strategy that assures both individual services and the contracts between them work as expected over time
- Avoid anti-patterns like hanging on to a central database model
Your fully remote workforce is not as effective as it used to beAs remote work becomes the new normal do you find your team becoming less focused? Are problems taking longer to solve? Do you need to figure out how to replace whiteboard brainstorming and design sessions, especially those critical meetings with stakeholders? IfThen has helped many organizations:
- Structure teams and help them choose ‘ways of working’ adapted for remote teams
- Implement pairing, core hours, and other practices to ensure coordination and avoid ‘drift’
- Select collaboration tools and methods, especially for distributed systems development
Your investment in DevOps has not yielded continuous delivery and improvementDo you have a working environment in which building, testing and deploying software can occur quickly, reliably and frequently? By doing this, a company can achieve its goals faster and deploy new features, security patches, and bug fixes. We can assist with the following:
- Automated build and deploy
- Test automation (including test planning)
- Improved SDLC Lean / Agile process
- Develop locally in the same environment as deployment (e.g., If you use containers, be able to run them locally)
- Trunk development with feature flags versus branch development