AI Research and Product Accelerator

Distributed Cloud computing

Topics around how to build scalable distributed systems.

Micro Services - Good Resources

Before MicroServices pattern was made popular, folks like me, who built distributed systems like network switches had already adopted lot of topics that comes with it. For example, Wireless switches whose primary job is to not to drop a single message allowing users to smoothly browse the web or make voice calls, distributed messaging systems, service discovery, load balancing, high availability, failure recovery in scale, routing etc are basic features of these systems.

As consumer and enterprise software scaled over the years, some of these basic features needed to be adopted as people found out first generation, monolithic 3-tier systems were expensive to maintain and build, hard to scale and costs are too high.

So, anyone who has been around in software industry last couple of decades, can easily map these concepts when they hear these words like micro services and associated patterns.

I found out, best way for me was to 

1.  Map the concepts I already knew building distributed systems in the past(I was lucky enough to build 3 real-time low latency distributed systems(1 Wirelines VOIP switch  and 2 Wireless Backbone systems) which had serves millions of users ) and problems that came with it. Without getting too much bothered about tech stack or frameworks.

2. Learn and study sample implementations talking to folks who has done it. Pick one tech stack and stick with it..In my case, I used Spring Cloud/Netflix, Java, MySql, AWS etc. 

3. Practical experience of doing it in on technology stack and doing it in real system. 

As we all know, most products start with some sort of monolithic architectures as business requirements change overtime. So, it is important to know, how to build a new system using these patterns(a clean way). But in most cases it will be about transitioning existing system which already being used by customers to micro services based architectures.   

Rather than repeating, I am going to refer to existing materials(there are plenty) to begin with. you can work your way from there.

Useful Blogs  https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture

http://microservices.io/

A Good Book

Sam Newman's book on "Building MicroServices".

Open Source 

https://zookeeper.apache.org/ - Apache ZooKeeper

https://netflix.github.io/

http://projects.spring.io/spring-cloud/ - Provides you out of the box features  like below to build scalable services.

  • Distributed/versioned configuration
  • Service registration and discovery
  • Routing
  • Service-to-service calls
  • Load balancing
  • Circuit Breakers
  • Global locks
  • Leadership election and cluster state
  • Distributed messaging

Learn more,

 

 

BlackPepper Labs