Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Microservices Enable Development of Special Purpose Apps That Align With Business Goals

DZone's Guide to

Microservices Enable Development of Special Purpose Apps That Align With Business Goals

See how microservices let you see the bottlenecks in your apps and scale more quickly in this interview with the V.P. of Software Engineering at SendGrid.

· Microservices Zone ·
Free Resource

Containerized Microservices require new monitoring. See why a new APM approach is needed to even see containerized applications.

Thanks to Sha Ma, V.P. Software Engineering, SendGrid for sharing her insights on the current and future state of microservices.


How is your company involved in the creation or use of microservices?

SendGrid is a cloud-based digital communication platform that enables businesses to engage with their customers via email reliably, effectively and at scale. We’ve shifted most of our backend systems onto microservices architecture to enable us to effectively scale horizontally and vertically.


What do you see as the most important elements of microservices?

There are many advantages to a microservices architecture. For example, breaking up huge monolithic code bases into smaller independent services allows an organization to have many small, focused teams who are empowered to operate autonomously and in parallel. These special purpose microservices can also align directly with business goals to better provide customer value.


Which programming languages, frameworks, and tools do you, or your company use, to build out microservices?

Our Frontend is ReactJS and our Backend is mostly GoLang, with some Java and Python. We also use RESTful APIs as contracts for microservices to interact with one another.

We made the decision to migrate our entire tech stack over to AWS. We are now using many AWS managed services including S3, CloudFront, Kinesis, Lambda, ElastiCache, DynamoDB, RDS, etc.


How have microservices changed application development?

Microservices has really pushed the DevOps revolution forward in promoting small full-stack teams to own everything from UI, to application logic, to underlying data. Because of these clearly defined boundaries and API contracts, dev teams can operate fairly autonomously from one another. However, developers need to keep in mind best practices of distributed systems, where they need to account for graceful failure conditions and network latency.


What kind of security techniques and tools do you find most effective for securing microservices?

We’re using IAM policies in AWS to drive finer granular permissions. Each team has their own production environment, which limits access to other teams’ systems and we use best practices around logging, monitoring and alerting.


What are some real-world problems you, or your clients, are solving with microservices?

We provide direct line of sight to revenue. It’s easier to deploy multiple features in parallel. We’re able to show improvements in productivity and business value and provide greater flexibility in reorganizing engineering teams.


What are the most common issues you see affecting the implementation of microservices?

A lot of companies struggle with how to break up a monolithic code base into the right size. For example, breaking up the codebase too much may add unnecessary dependencies and latency. Companies should also train developers on the best coding practices in distributed systems and microservices.  For example, teams need to design with failure scenarios in mind and factor in considerations such as network latency and reliability. It’s also important to make sure systems can fail gracefully, have circuit breakers and exponential backoff in place.


Do you have any concerns regarding the current state of microservices?

No, it’s not really a new concept breaking larger applications into smaller components to be more flexible and scalable. Microservices may introduce some additional operational complexity. Smaller independent teams can create a “silo” effect, where teams are not effectively sharing common tooling, processes, or even reusable components as efficiently as possible. Teams need to have good knowledge sharing paths in place from a communications standpoint.


What’s the future for microservices from your point of view - where do the greatest opportunities lie?

Developing and managing microservices have and will continue to become easier and more cost-efficient as more and more managed services are being offered through AWS, Azure, Google Cloud, etc. Infrastructure as a Service (IaaS) will lower the bar of entry for a lot of developers and startups in the future.


What do developers need to keep in mind when working on microservices?

There’s an abundance of libraries out there for developers to reference. I recommend using small single libraries, retrying connections and owning your own data. Data should reside where the business logic resides. Finally, I’d recommend teams take a look at Go Standard, HTTP routing, and circuit breaker libraries right off the shelf.

Automatically manage containers and microservices with better control and performance using Instana APM. Try it for yourself today.

Topics:
microservices

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}