0% found this document useful (0 votes)
193 views2 pages

Microservices Architecture

The document discusses 10 major challenges in implementing a microservices architecture: data synchronization, security, versioning, discovery, data staleness, debugging and logging, testing, monitoring, DevOps support, and fault tolerance. It proposes solutions to each challenge that use technologies like event sourcing, API gateways, API registries, caching, distributed tracing, mocking, and circuit breaking.

Uploaded by

Moisés Quispe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
193 views2 pages

Microservices Architecture

The document discusses 10 major challenges in implementing a microservices architecture: data synchronization, security, versioning, discovery, data staleness, debugging and logging, testing, monitoring, DevOps support, and fault tolerance. It proposes solutions to each challenge that use technologies like event sourcing, API gateways, API registries, caching, distributed tracing, mocking, and circuit breaking.

Uploaded by

Moisés Quispe
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

I am a cloud API developer and architect and currently working on Google's GCP based

microservices for a large retail client of USA.

Transitioning/implementing to microservices creates significant challenges for


organizations. I have identified these challenges and solution based on my exposure to
microservices in production.

I am writing this in June 2018. At this time, microservices architecture has not matured
enough to completely address all the existing challenges, however, open source
communities and IT product companies are trying to address all these open issues. All
new research on this topics is based on finding solutions to the new challenges.

These are the ten major challenges of microservices architecture and proposed
solutions:

1. Data Synchronization — We have event sourcing architecture to address this issue


using the async messaging platform. The saga design pattern can address this challenge.

2. Security — An API Gateway can solve these challenges. Kong is very popular and is
open-source, and is being used by many companies in production. Custom solutions can
also be developed for API security using JWT token, Spring Security, and Netflix Zuul/
Zuul2. There are enterprise solutions available, too, like Apigee and Okta (2-step
authentication). Openshift is used for public cloud security for its top features, like Red
Hat Linux Kernel-based security and namespace-based app-to-app security.

3. Versioning — This will be taken care of by API registry and discovery APIs using
the dynamic Swagger API, which can be updated dynamically and shared with
consumers on the server.

4. Discovery — This will be addressed by API discovery tools like Kubernetes and
OpenShift. It can also be done using Netflix Eureka at the code level. However, doing it
in with the orchestration layer will be better and can be managed by these tools rather
doing and maintaining it through code and configuration.

5. Data Staleness — The database should be always updated to give recent data. The
API will fetch data from the recent and updated database. A timestamp entry can also be
added with each record in the database to check and verify the recent data. Caching can
be used and customized with an acceptable eviction policy based on business
requirements.

6. Debugging and Logging — There are multiple solutions for this. Externalized
logging can be used by pushing log messages to an async messaging platform like
Kafka, Google PubSub, etc. A correlation ID can be provided by the client in the header
to REST APIs to track the relevant logs across all the pods/Docker containers. Also,
local debugging can be done individually on each microservice using the IDE or
checking the logs.

7. Testing — This issue can be addressed with unit testing by mocking REST APIs or
integrated/dependent APIs which are not available for testing using WireMock, BDD,
Cucumber, integration testing, performance testing using JMeter, and any good
profiling tool like Jprofiler, DynaTrace, YourToolKit, VisualVM, etc.

8. Monitoring — Monitoring can be done using open-source tools like Prometheus in


combination with Grafana by creating gauge and matrices, Kubernetes/OpensShift,
Influx DB, Apigee, combined with Grafana, and Graphite.

9. DevOps Support — Microservices deployment and support-related challenges can


be addressed using state-of-the-art DevOps tools like GCP, Kubernetes, and OpenShift
with Jenkins.

10. Fault Tolerance — Netflix Hystrix can be used to break the circuit if there is no
response from the API for the given SLA/ETA.

You might also like