icroservices are an architectural pattern for breaking software down into different components organized around business capability. While not prescriptive in every sense, there are some core tenets in developing microservices, such as each microservice having its own database and requiring other services to access any data through the API layer, microservices should be relatively small conceptually, and loose coupling between services. Read through and listen to the sources below to learn more of these core tenets.
It is difficult to discuss microservices without also addressing the elephant in the room: monoliths. Monoliths are typically n-tier architectures that couple business logic services together and often share one, larger database. There is nothing inherently wrong with monolithic architectures, but there are trade-offs in choosing this pattern over another like microservices, which is typically used to remediate many of the drawbacks of a monolith.
While a powerful tool for building distributed, modular applications, microservices are not a panacea. Like any other architectural pattern, there are pros and cons to using microservices for building software products. If implemented correctly, microservices will surely provide a loosely coupled suite of services that enable horizontal scalability at a near-infinite capacity. It often also leads to a system with constituent parts that can be updated and modified independently, creating more opportunities for faster and automated deployments. Despite all these positive qualities, microservices can introduce additional complexities into a software stack and may require appropriate systems in place to manage effectively, such as monitoring/logging, DevOps tools, and potentially increased network overhead.
We value your feedback and look forward to your guidance on how we can continue to improve ACM Selects together. Your suggestions and opinions on how we can do better are welcome via email through selects-feedback@acm.org.
Understanding Microservices
Microservices
First published on Martin Fowler’s website, March 2014.
Software luminary Martin Fowler describes some of the key characteristics of microservices and what separates them from other well-known architectures, such as monoliths and service oriented architecture. He addresses some of the common misconceptions with microservices and some core tenets for how to successfully implement a microservices architecture of your own.
[ Read more ]
[ Watch here ]
The Evolution of Microservices with Adrian Cockroft
First published in ACM Tech Talks, June 2016.
If you are new to microservices, The Evolution of Microservices with Adrian Cockroft is a tech talk to understand the why, what and how of microservices. This talk discusses why we need a new way of delivering new software and why microservices is a buzz right now, what is missing, and what happens next. On top of the above, you will further understand the different microservice architecture and what choices you can make.
[ Watch more ]
Getting into Microservices
Java Microservices: A Practical Guide
First published on Marco Behler’s website, November 2020.
JetBrains Developer Advocate Marco Behler shares his insights on how developers can transition from a monolithic approach into different Java microservices architecture paradigms. His guide discusses the differences between the two approaches, common Java microservices questions, and popular Java microservices libraries, with the goal of highlighting points to consider when considering microservices. We recommend this post for Java developers looking to quickly improve their technical knowledge in the field.
[ Read more ]
How to Build a Microservices Architecture With Node.Js to Achieve Scale?
Published on DZone with permission from Sagar Tambe, November 2019.
One of the drawbacks in developing applications is that such applications can significantly grow in size and complexity, resulting in code that becomes difficult to debug, maintain, and iterate on. Microservices can alleviate these issues by breaking down the application into smaller, modular components. Sagar Tambe, Senior Principal Engineer for Cuelogic Technologies, shares a practical, hands-on introduction to building a microservices architecture using Node.js, an open-source, cross-platform JavaScript runtime environment. We recommend this article for web developers either already familiar with JavaScript development and Node and are interested in improving the scalability of their applications.
[ Read more ]
Python Microservices Web App (with React, Django, Flask)
First published on freedcodecamp’s YouTube channel, December 2020.
In his tutorial on freecodecamp, Full Stack Developer and Instructor Antonio Papa discusses how Python can be as part of your microservices development tech stack. This tutorial goes through different aspects of web app production and uses popular APIs such as React, Django and Flask to simulate real-world development using Python.
[ Watch here ]
Microservices in Golang
First published on Ewan Valentine’s website, December 2020.
Ewan Valentine provides a series of tutorials on writing microservices for Golang. Golang, also known as Go, is known for its concurrency and API support for microservices development, making it an excellent choice for creating large-scale applications. Ewan shares the knowledge and experience he’s accumulated through his self-education journey, covering the basics and providing additional resources that can help bolster your learning experience.
[ Read more ]
Challenges
Microservices: The Journey So Far and Challenges Ahead
First published in IEEE Software, Vol. 35, Issue 3, May/June 2018.
Microservices: The Journey So Far and Challenges Ahead discusses the technology landscape, reviews the benefits and challenges of microservices. One of the challenges is related to modularization; finding the right modules, with the right size, the right assignment of responsibilities, and well-designed interfaces. This can lead to increased network communication which may result in poor performance and instability.
[ Read more ]
Design
Microservices Design Guide
First published in Platform Engineer on Medium, October 2018.
We recommend this in-depth guide for developers interested in continuing self-education on microservices. Thilina Ashen Gamage, Senior Software Engineer at Yaala Labs, provides a deep dive on various topics, including but not limited to benefits, challenges, and best practices for real-world deployment as well as go-to frameworks to consider.
[ Read more ]