This is the second blog on our article series on evolutionary architecture. Find the full series HERE.
What are Microservices?
Microservices are small, standalone applications that can be designed and deployed individually like Lego bricks. With each microservice you can add new functionality like a shopping cart, payment and search functions. Microservices are modular: working independently of each other and loosely coupled, each microservice can be replaced individually without impacting the rest of the application. As Rebecca Parsons, CTO at Thoughtworks, explains in this video, microservices come with smart endpoints and dumb pipes. As a design principle, this approach favors basic, time-tested asynchronous communication mechanism (APIs) over complex integration platforms. APIs allow the focus to be put on the microservices by dedicated teams. Product owners, marketers and process managers manage their own piece. Thus, the workload shifts from IT administrators to end users. After initial development and implementation, all IT has to do is to keep things running smoothly. That brings both challenges and advantages.
Instead of a classic, horizontal structure, microservices require a cross-functional structure with vertical teams that work independently. Organizations will need to have the right infrastructure and tools in place to orchestrate and monitor their microservices architecture. The following challenges come with choosing for microservices:
- Decentralized data: Each microservice has its own data store. Multiple databases and transaction management require extra attention.
- Testing: When testing a microservices-based application, you’ll need to confirm and test each dependent service. This makes integration testing and end-to-end testing more difficult and also more important, since one failure can cause something a few hops away as well.
- Deployment: Especially in the initial set up, deployment requires attention. You’ll need to think about how services are rolled out and in what order. Investment in deployment automation will be necessary.
- Monitoring: A centralized view of the whole system is critical to pinpoint bugs. Remote bugging is not an option across dozens or hundreds of services.
And with microservices relying heavily on messaging, certain new challenges will arise. Without using automation and advanced methodologies such as Agile, communication can be hard. This calls for DevOps tools such as CI/CD servers, configuration management platforms APM tools for network management. You need a common container orchestration system, multiple tiers of load balancing, and service discovery to make sure that the services are deployed correctly and to monitor whether they work together as planned. Companies already using these tools will find starting with microservices is easy. If these extra requirements need to be adopted however, this can be a challenge for smaller organizations.
The Advantages of Microservices for E-commerce
Facing changing customer demands, the rise of the mobile web and ever shorter innovation cycles, merchants need to make sure to have both an organizational and a technical structure that allows for agility and speed. Today, speed is a leading competitive differentiator. Monolithic applications in e-commerce, which still drive most of the biggest retailers’ sites worldwide, are becoming bottlenecks for innovation. And while the monolith applications can be deployed at once and tested and monitored more easily, this comes with complexity and inflexibility.
In comparison, there are six main advantages that microservice architecture offers:
- Reduced software complexity: The scope of a single microservice’s functionality is limited. That makes maintaining and updating so much easier. You only have to care about messages from other microservices that you subscribe to (inputs) and your API that can be called (outputs).
- Specialization: Microservices allow for choosing the right tool for the right task. Each microservice can use its own language, framework or ancillary services best suited and preferred by the team using it. For services requiring extensive background calculation, developers might choose to use Java for example. Whereas others might rely on more lightweight technologies such as PHP or Ruby.
- Decentralized responsibility: Dedicated teams take full responsibility for “their” microservice. This leads to smaller codebases, which help developers to focus and have a closer connection with end-users. This leads to better motivation and more clarity. As Amazon’s CTO Werner Vogels famously put it: “You build it, you run it”. And so you own it.
- Faster time to market: Building a microservice requires a cross-functional development team that works independently on their project. This reduces synchronization efforts between teams and allows significantly faster deployment. For example, the product service team can work on its own and makes adjustments and automate deployments as it sees fit – independently of what the payment team is currently working on.
- Increased resilience: A business application made of an array of microservices has no single point of failure. If one service no longer responds, this does not automatically break the whole application. For example, you can continue streaming movies on Netflix even if the search is down. Maintenance or failure won’t affect users as heavily as with a monolithic architecture.
- Highly scalable: Microservices are small and work independently. This means it’s easier to scale them vertically and increase the overall performance of the whole business application. Without having to scale the entire application, you can scale up a single function or service. You can deploy business-critical services on multiple servers for increased availability and performance.
Your Microservices Starting Point
To capitalize on microservices, your organization needs to be capable enough to organize and manage it. Required tooling and infrastructure are offered by commercetools, a leading e-commerce solution that brings microservices, API, and cloud together. Their cloud-based microservices solution contains 300+ commerce APIs that can be used individually. With ready-made commerce blocks you can easily create or supplement your own infrastructure. That enables true business agility and e-commerce success. As a preferred commercetools partner, Osudio supports customers with digital strategy, implementation of commercetools, organizational shift and digital continuity.
This is the second article in our article series on evolutionary architecture. You can learn about the underlying principles such as microservices, API, cloud commerce, headless commerce and even-driven on this page in depth.
About Osudio & commercetools: At Osudio, we craft digital experiences that define the success of great brands and companies. Being around since the ‘90s, we have a proven track record in e-commerce and creating digital experiences. We do this by engaging customers and driving business, based on a sound technology. commercetools, the next-generation software technology company that offers a true cloud commerce platform, provides the building blocks for the new digital commerce age. An agile, componentized architecture improves profitability by significantly reducing development time and resources required to migrate to modern commerce technology and meet new customer demands. It is the perfect starting point for customized microservices.