November 17, 2017
Microservice & Serverless Architectures – Is Either Right for You?
On this episode of Take 3, we explore microservices and serverless architectures – what they are, why microservices have gained so much in popularity in recent years, and when to use either approach when architecting your digital products. Dan Greene and Derek Tiffany join us in the studio to define and differentiate microservices and serverless for listeners and explain how they work individually and in tandem.
A big reason that microservices have become increasingly of interest in the product development world is companies like Netflix describing their own use of microservices and advocating that product architectures be created in a similar mold (see Adopting Microservices at Netflix: Lessons for Architectural Design).
Dan and Derek, however, caution companies to not be too quick to jump on the bandwagon – many companies can gain the benefits of microservices without having to re-architect their entire product or products into individual microservices.
Listen to the Episode
Interested in hearing more? Tune in below.
- Microservices are really just how your code is structured. Serverless is more of the infrastructure mechanisms in delivering that capability – but these aren’t mutually exclusive ideas.
- Sometimes you might be providing microservices architecture on top of a serverless deployment model. Then again, at times you might be using one or the other. It’s important to not necessarily see them as exclusively separated, but also not to think of them as as always together.
- The biggest benefit of serverless architecture is the elastic scalability – being able to dynamically use what you use and don’t pay for what you don’t use. The other big benefit is being able to design your application on top of known services.
- Microservices are developed and released independently of each other, which can allow for rapid iteration but also requires managing hundreds (if not thousands) of independent services.
- When deploying these models, an incremental approach is key.
- Don’t try to re-architect your whole product into microservices. It’s a very common desire because you want to gain all of the benefits, but it’s also very impractical to spend that much time and effort to re-architect your entire application.
- Find fault lines within your product so you can divide it up; Instead of one monolith, split it up to three or four. Let that run for a few months, make sure that your operational processes are solid, and then you may be able to break one of those in half again. You have to make sure that you don’t create a service when you don’t need to. Every time you increase that granularity of your capabilities, you’re going to gain some of that benefit, so be willing to gain the benefit incrementally. “People try really hard to swing for the fences on every single at bat, but that’s not how you’re going to be successful.”
- A lot of the serverless frameworks, and to a lesser degree microservice architecture, make your application more event-driven; it leans into asynchronous processing and message-based systems. That’s a pretty big jump from process-based thinking. So you have to really consider that mindset shift if you want to move most of your application into an event model, and your application may not fit that model at all.
- Don’t just jump on a fad because it’s a fad. Make sure that it really is going to impact your build or your team or your business in a positive way.
- See the cartoon Derek mentions that he loves that shows the difference between enterprise companies’ and startups’ respective journeys to the cloud
- See some of the “microservices Death Star” images that depict the product architectures at companies like Amazon, Netflix, and Twitter
ABOUT THE GUESTS
Derek Tiffany is a Technical Manager at 3Pillar Global. He holds technical responsibility for the implementation and delivery of software development projects using a variety of technologies and frameworks, including blockchain, .NET Core, and Java/J2EE. In addition to implementation, Derek also assists 3Pillar clients in validating and defining their new product strategies taking advantage of emerging technologies. This currently includes cryptocurrency and Serverless applications in production. In the past it also involved developing some of the first applications for Windows Phone. Derek has spent over 20 years as a developer in the Washington, DC area at both professional services and product companies. Learn more from Derek and read his latest blog posts: 3pillarglobal.com/author/dtiffany
Dan Greene is the Director of Cloud Services at 3Pillar Global. Dan has more than 20 years of software design and development experience, with software and product architecture experience in areas including eCommerce, B2B integration, Geospatial Analysis, SOA architecture, Big Data, and has focused the last few years on Cloud Computing. He is an AWS Certified Solution Architect who worked at Oracle, ChoicePoint, and Booz Allen Hamilton prior to 3Pillar. Learn more from Dan Greene and read his latest blog posts, including his 4-part blog series on building a Microservices Architecture with Spring Boot and Docker: 3pillarglobal.com/author/dgreene