Containers and Kubernetes

Get Involved. Join the Conversation.

Topic

    Joydeepta Bhattacharjee
    Microservices and Containerization : Event driven...Answered
    Topic posted March 22, 2019 by Joydeepta BhattacharjeeRed Ribbon: 250+ Points, tagged Containers, Kubernetes, Tip 
    123 Views, 3 Comments
    Title:
    Microservices and Containerization : Event driven Interaction
    Summary:
    This post is dedicated to open up a developer discussion on implementing a Microservice Architecture Reference over OCI OKE and develop a agile event based approach to provide resiliency and atomicit
    Content:

     

    As micro services being so evident and also Oracle finally coming up with host of docker images for SOA 12c and subsequently OCI OKE, we have been overwhelmed with various problem statements about designing an effecting Micro-services design pattern. With this note, I would like to really traverse the path of Event based mechanism and less on orchestrating the pre-conceived steps we were accustomed to take in traditional monolithic Integration space.

     

    Challenge in Problem Space#

     

    1. Breaking in DDD business entities and developing CRUD Operations eventually forming the basis for commands
    2. Storing the updates with large business data in self-contained data store for that Business context or domain
    3. Publishing the events adapting to application changes to decouple subscribers or listeners
    4. Maintain the atomicity of the change between the action and the event generated and published allowing compensation during failure
    5. Synchronicity of query with change of event store in near real time impacting time lag
    6. Complexity of query formation across disparate MS data stores and choice of Materialized views over new edge document based storage like in MongoDB supporting relational + document structures
     

    Implementation of CQRS #

     

    It seems that as traditional Oracle Cloud BOM does not include any No-sql storage or document driven storage in Mongo db for custom query we have rely on Materialized Views
    Spring Boot api driven framework would be using it’s repository beans to update the event records in MySQL
    The update Order table triggered should also manage the transaction to post to Event store and publish events without supporting 2PC
    The application layer may implement a Façade with dispatcher and router to efficiently route the events to event store.
    The same dispatcher may be used to query from the materialized view to the presentation layer, to consumer or subscribers or may be to and reporting and analytics engine.
     

    With all these consideration in mind can we suggest a Reference architecture with some framework from Oracle to efficiently implement the pattern.

     

    These would be more evident as time has come to socially engineer a micro service with lead to change and adapt to business need of current time in a connected world of streams , bots , devices and legacy COTS more or less to co-exist at-least for a while. We also have to look for OKE Infra supporting event based messaging and storage and built a standard architecture to achieve resiliency .

    Best Comment

    javier mugueta

    Hi,

    In my opinion you don't need to find for mongoDB or mysql or whatever for micro-services persistence. With oracle database you can store/retrieve/update JSON easily, you can adopt the "one db per micro-service" easily, you can mix sql and no-sql syntax easily, you can implement a put/get mechanism easily, the database service is elastic, scalable, fault tolerant and easy to connect/disconnect to your micro-services pods easily, you have drivers for Node, Go, Java, and more...

    Regarding event driven matters, I think whatever existing Kafka implementation is a good choice because its performance that allows to manage high volumes of messages with near zero latency (at least if you implement the choreography coding in robust/quick languages such as Go). And, again, if you want/need to persist Kafka messages for a period of time, oracle database is a very good option thanks to the hi amount of IOPS it supports.

    Regards 

    Comment

     

    • javier mugueta

      Hi,

      In my opinion you don't need to find for mongoDB or mysql or whatever for micro-services persistence. With oracle database you can store/retrieve/update JSON easily, you can adopt the "one db per micro-service" easily, you can mix sql and no-sql syntax easily, you can implement a put/get mechanism easily, the database service is elastic, scalable, fault tolerant and easy to connect/disconnect to your micro-services pods easily, you have drivers for Node, Go, Java, and more...

      Regarding event driven matters, I think whatever existing Kafka implementation is a good choice because its performance that allows to manage high volumes of messages with near zero latency (at least if you implement the choreography coding in robust/quick languages such as Go). And, again, if you want/need to persist Kafka messages for a period of time, oracle database is a very good option thanks to the hi amount of IOPS it supports.

      Regards 

    • Joydeepta Bhattacharjee

      Thank you. I am also trying to explore a CQRS framework Axon Opensource to deploy on it however facing challenges with right strategy. Can you give some insight,

    • Joydeepta Bhattacharjee

      I am posting a Handout for using devcs to build and deploy in K8 OKE clusters and monitoring it, but still not clear how to adopt to CQRS or a better MS decoupled communication. Looking for comments