While Microservices provide tremendous benefits, they are not a free lunch. Learn about the techniques used to solve their challenges. A recent interview conducted by DZone’s Tom Smith with GigaSpaces’ Niv Ingberg, Solution Architect and Technical Product Manager yielded an interesting discussion on the current and future state of Microservices, how Microservices have changed application development, and real-world problems GigaSpaces is solving with Microservices.
How is your company involved in the creation or use of Microservices?
One of the challenges that Microservices architecture developers are faced with is communication across multiple services which slows down performance. Our in-memory computing platform technology addresses this issue by enabling the services to interact through in-memory messaging instead of inter-process communication while maintaining Microservices decoupling.
What do you see as the most important elements of microservices?
Microservices are all about autonomy, decentralization, and real-time computing. Developers can be focused on smaller targeted tasks, which allows faster development with less risk. This mantra is in-line with GigaSpaces’ philosophy of simplifying the complexity of big data and analytics and allowing developers to innovate with confidence.
Which programming languages, frameworks, and tools do you, or your company use, to build out microservices?
Java Enterprise Ecosystem, Scala, .Net. Data modeling to API integrates with Java since it’s a more mature technology standard.
How have microservices changed application development?
It’s not just an architectural style, it’s also a development methodology. It provides autonomy for software development teams of three to five people (Amazon calls this ‘two pizza’ teams) with developer, database, and designer all on the same team. Organizations will build software systems that mimic the communications pattern of the organization (Conway’s Law). Microservices break down silos between applications and IT imposing strict organizational requirements on the team to be co-located. Symbiotic with DevOps – autonomy, decentralization, fragmentation of scale 50 to 100 microservices at a time. This increases accidental complexity. You cannot have successful microservices without DevOps in place.
What kind of security techniques and tools do you find most effective for securing microservices?
Security domain boundaries – role-based authentication in place. Identification and authentication – propagate security from the database tier to the application API – who can access, deploy, scale. Do not lose control over the service.
What are some real-world problems you, or your clients, are solving with microservices?
We have a retailer that needs to scale 5X for inventory lookups on Black Friday. They need to scale with in-memory computing. We help them co-locate data and business logic together. Move code to the data and process in place.
Financial services and telecommunication routing – have high throughput workloads with less than 50 millisecond response times.
A railway transportation provider can reroute all trains in seconds versus hours.
Healthcare Integrated Exchanges with a 360-degree view of the patient for real-time decision support and analytics to improve quality of care. In a pay for performance model, the physician is working to control blood sugar levels for diabetes patients.
What are the most common issues you see affecting the implementation of microservices?
1) Information – the distributed environment is still hard to debug and troubleshoot with latency and disconnections. Need to learn the fallacies.
2) Data management – monolithic apps typically came from one database. When the data is distributed across many small components, how do you maintain data concurrency across two or more services?
Do you have any concerns regarding the current state of microservices?
Microservices is not a free lunch. It lets you scale but it comes with its own set of complexities. There is a need to understand the organization and the architectural changes that Microservices bring. These changes need to be managed within a deployment lifecycle in a decentralized infrastructure and architecture.
What’s the future for microservices from your point of view – where do the greatest opportunities lie?
We’re already seeing it with serverless and function as a service. The entire application stack will be commoditized.
There will be more decentralization. More real-time abilities for data science and analytics. Intelligence-driven microservices with an in-memory computer doing real-time analytics with Spark versus big analytics solutions.
What do developers need to keep in mind when working on microservices?
Go beyond the boundaries of thinking of applications as a single system and instead think “small” in the context of the service. Think of object-oriented programming principles where each service should do one thing but, do it well.
Understand distributed computing. Let microservices dictate the data model – everything won’t be relational, there will be geospatial, unstructured, and classical translations. Understand the spectrum of data management. Domain-driven design. Eliminate the risks and pain points.
Is there anything you’d like to know about what software developers are doing with regards to microservices?
High performance, low latency, scalability lessons from the field. What’s the impact of decentralization? What’s the right footprint for one service versus another? What’s the level of granularity for performance developers are looking for?