Showing posts with label Cloud Computing. Show all posts
Showing posts with label Cloud Computing. Show all posts

Wednesday, February 03, 2016

“Microservices” – What,Why,How and Challenges

Microservices” is the new hot thing and certainly at the peak of the hype cycle. This post is my summary after going through various articles, blogs, courses, videos , books and very brief hands on experience with Microservices. So let’s get started…

What are Microservices ?

“Microservices is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.”

(Martin Fowler : http://martinfowler.com/articles/microservices.html)

Microservices are simply an architecture style to design an application in a certain way. Some also refer to it as Fine-grained SOA or based on a subset of SOA Principles.Here are some of the characteristics/tenents of Microservices:

  • Services as Loosely coupled Components.
  • Autonomous Services which can be Scaled, Deployed and Updated independently.
  • Uses HTTP or lightweight protocol.
  • Technology, Language and Platform agnostic.
  • Decentralized Data Management.
  • Organized around business capabilities.

Why Microservices ?

Microservices is the the next evolution in Software Decomposition. It enables separation of concerns and reuse which are quite essential in today’s cloud oriented world. Here are my 3 reasons why you should choose a Microservices approach from a Technology point of view:

  1. Faster delivery of features   (State of art in Microservices)
  2. Better utilization of Infrastructure to reduce costs

Does this mean every application should use Microservices approach ? Not necessarily…

One argument is to start with a traditional monolith, and split the application into Microservices once the monolith becomes a problem. Although there are others who say not to start with monolith, since it is very hard to split a monolith.

I think Microservices approach has its own challenges and not every application needs to deal with it (at least initially). But every application should keep this decomposition mindset at the forefront of the architecture so that it’s easier to split in future if we need to.

Here is an great article explaining the four main benefits of Microservices from a Business point of view : Innovate or Die : The Rise of Microservices.

How to create Microservices ?

Here are some of the resources that can guide you in building Microservices:

f53bf_microservices-ecosystem

 

Challenges

Distributed systems are inherently complex and Microservices approach takes this to the next level.

Here are some of the challenges that Microservices bring to the table:

  • Organization
    • Service Ownership (from dev to support).
    • Service Contracts
    • Health Metrics
    • Handling Failures, Throttling and Backwards compatibility
  • Discovery
    • Service Registry
  • Data Management
    • Transactional integrity with Decentralized Data Stores.
  • Deployment and Testing
    • Building Continuous Delivery pipeline
  • Monitoring
    • Publishing Internal and External Metrics (Latency, Request Per second, Error rate etc..)
    • Log Aggregation
    • Correlating Requests

 

Hope this gives a good summary of the Microservices world as of today.

Enjoy Microservices…

 

 

Wednesday, July 02, 2014

Patterns for Cloud Apps on Azure


I have been working on a lot of new Azure projects and here are some really good articles, posters and video's that I found very useful around best practices/ patterns.



Azure Rocks !!!

Friday, January 23, 2009

Live Mesh Beta & Live Mesh Tech Preview


I just installed the Live Framework SDK and started playing around with the Live Mesh and came up with some interesting things to share.

The first thing to remember is that "Live Mesh Beta" and "Live Mesh CTP" are two different Mesh Environments.

The Live Mesh CTP : https://developer.mesh-ctp.com/ installed from the Live Framework SDK is a developer sandbox environment with limited options and doesn't include the File/Folder Synchronization functionality.  

The Live Mesh Beta : https://www.mesh.com/ is preview environment with full set of options including the File/Folder Synchronization functionality. 

For developing Mesh Applications we have to use the Live Mesh CTP only.

If you have registered for both these services than probably you would have 2 clients installed on your machine :


clients

Initially while signing in for the Live Framework client I got a message box popup saying :

---------------------------------------------------------------------------------
Unable to sign in to Live Mesh.

Please make sure your user name and password are correct.

Request to MOE failed with return code "0x80070005"
---------------------------------------------------------------------------------

Finally I got this resolved by disabling the antivirus software running in the background and now my laptop is "meshified" and ready to mess around inside the sandbox :-)  

mymesh

Monday, January 05, 2009

Bits on 'Cloud Computing' . . . . . !!!


So What is Cloud Computing ?
"Cloud computing is Internet-based ("cloud") development and use of computer technology ("computing"). The cloud is a metaphor for the Internet, based on how it is depicted in computer network diagrams, and is an abstraction for the complex infrastructure it conceals."
Live Services, Live Mesh, Live Platform, Windows Azure, SQL Services, .Net Services . . .
these are some of the titles associated with the cloud offerings from Microsoft.
So where should we start from ?

I would recommend to start with the Live Framework. Here is a brief description of some of the basic concepts of live framework including some of the common application models and different flavors of Live Operating Environments available today. ( What is Live Framework and Why Should I Care? )

( Mike Taulty has written some good posts describing his development experience with Live Framework SDK which might be useful for all. )


The next step could be to explore the Azure Services Platform, which includes .Net Services, SQL Services, SharePoint Services and Live Services as well. 

azureservicesplatform

( Here is a good list of Links and Resources from Sriram Krishnan on Windows Azure. )

AddIn