Thursday, July 7, 2016

Microservices

There has been a lot of hype around microservices over the last couple of years.  I've been doing a fair bit of research and experimentation with this architecture and think it is the perfect fit for certain large project but needs to be adopted with very careful consideration. 

The positives are undeniable, having independently deploy-able, language agnostic services that can be tested in isolation definitely has the potential to scale well.  This will also add much needed flexibility that is lacking in many complex systems. 

However for many projects this architecture will introduce significant real world challenges including:

Code Reuse: When I started looking into Microservices the following question kept coming up "Where should I draw the line between having shared class libraries vs moving common code into a new shared services?"

Shared class libraries are frowned upon by many purists because it goes against the independence paradigm of microservices and will thus reduce some of the benefits of having services that are truly decoupled .  However not having a shared class library is likely to result in significant refactoring of code when logic that should of been shared is moved from one service to another.  This has the potential to be expensive and may result in many other interdependent services being affected. Obviously this kind of problem exists with non-microservice architectures however changing a class library, compiling and then fixing every compilation error as well as using built in refactoring functionality in IDE's such as Visual Studio is likely to be easier than refactoring services across a varied technology stack and having to rely on excellent unit test coverage to ensure everything is picked up.

 As is often the cases with tight deadlines and limited budgets there will be cases where moving common code into a new service becomes too costly and/or risky and developers will end up redundantly replicating code which breaks the DRY design principle and will reduce the overall maintainability of the system.

Debugging: It is likely to add complexity to debugging when a developer needs to step through code across independent, queued, services calls through logic that is implemented in a variety of technologies.

Language Agnostic: One of the commonly spruiked advantages of microservices is that they are language agnostic. However without careful consideration this can lead to the creation of a very complex technology stack.  This may make maintainability an issue because software currency upgrades and patches will become more complex and because finding experts who have experience with a varied technology stack become more difficult to find.

Version and Deployment Control: This one is pretty obvious.  It can be difficult enough trying enforce consistent and understandable version numbering accross an n-tiered application.  Try having hundreds of services and multiple persistence repositories and this can get very confusing and difficult to control.

Refactoring: Undoubtedly deciding when to create a new service, merge two or more services, or split existing services into multiple services will be a relatively common occurrence.  This will have a cost because merging or splitting services could result in hundreds of services and potentially thousands of test cases being significantly affected.

So in summary, microservices architecture certainly has some advantages but it will work best when some very careful guidelines and standards are put in place across a project team to address some of the issues I've detailed above. 

29 comments:

  1. Replies
    1. The development of artificial intelligence (AI) has propelled more programming architects, information scientists, and different experts to investigate the plausibility of a vocation in machine learning. Notwithstanding, a few newcomers will in general spotlight a lot on hypothesis and insufficient on commonsense application. machine learning projects for final year In case you will succeed, you have to begin building machine learning projects in the near future.

      Projects assist you with improving your applied ML skills rapidly while allowing you to investigate an intriguing point. Furthermore, you can include projects into your portfolio, making it simpler to get a vocation, discover cool profession openings, and Final Year Project Centers in Chennai even arrange a more significant compensation.

      Data analytics is the study of dissecting crude data so as to make decisions about that data. Data analytics advances and procedures are generally utilized in business ventures to empower associations to settle on progressively Python Training in Chennai educated business choices. In the present worldwide commercial center, it isn't sufficient to assemble data and do the math; you should realize how to apply that data to genuine situations such that will affect conduct. In the program you will initially gain proficiency with the specialized skills, including R and Python dialects most usually utilized in data analytics programming and usage; Python Training in Chennai at that point center around the commonsense application, in view of genuine business issues in a scope of industry segments, for example, wellbeing, promoting and account.

      The Nodejs Projects Angular Training covers a wide range of topics including Components, Angular Directives, Angular Services, Pipes, security fundamentals, Routing, and Angular programmability. The new Angular TRaining will lay the foundation you need to specialise in Single Page Application developer. Angular Training

      Delete
  2. I think that everything has been described in systematic manner so that reader could get maximum information and learn many things.
    the best carding forum

    ReplyDelete
  3. For such purposes, I would have better sought the help of a much more reliable and verified partner, for example, I can advise you on the services of the company Nix Solutions. I do not understand why they have a lot of negative feedback, that they are http://nixsolutions.reviews/ nixsolutions scam, It's just a complete nonsense and fiction of competitors.

    ReplyDelete
  4. Great Collection of your softwares Thanks for sharing You can get Techubi IDM easily

    ReplyDelete
  5. This information is very useful. thanks for sharing.
    Website Design and Development

    ReplyDelete
  6. Long Description Riskonnect is the trusted, preferred source of Integrated Risk Management technology, offering a growing suite of solutions on a world-class cloud computing model that enable clients to elevate their programs for management of all risks across the enterprise. Riskonnect allows organizations to holistically understand, manage and control risks, positively affecting shareholder value Compliance solutions

    ReplyDelete
  7. The CRM software works by automating the sales and customer support functions. This helps in improving the performance of individual teams and hence, the entire organization. SugarCRM Philippines

    ReplyDelete
  8. For wholesale distributors of fast-moving consumer goods, FMCG, (TARGET), who’s sales reps and/or customers need to place remote orders on portable, wireless computing devices (FOR) employing mobile order management software that is fast, reliable, powerful, flexible, easy-to-use, 100% “native” with scores of trade-specific features and full back-office integration (DIFF), containing “core logic” developed and supported by the one enterprise software company, Ai2, with the utmost industry knowledge, ability and longevity (RTB)
    order management systems

    ReplyDelete
  9. As the procedure simulates an increase in system load by using multiple virtual users, various software are currently available to carry out load testing. salesforce dashboard

    ReplyDelete
  10. Custom programming advancement, which is additionally called bespoke programming improvement, is a particular application that is utilized for a particular organization. https://www.sigmanest.com

    ReplyDelete
  11. Any time you own your own PC, you have to stay up-to-date when it comes to anti-virus software. If you fail to do so, this could mean the utter destruction of your hard drive one day. Getintopc

    ReplyDelete
  12. This kind of testing is a sort of discovery testing in view of the particulars of the software segments being tried.registry cleaner

    ReplyDelete
  13. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I'll be subscribing to your feed and I hope you post again soon. Big thanks for the useful info  http://www.getinntopc.com

    ReplyDelete
  14. Amazing Article, thank you!. I am very glad to read your informative & practical blog. Kindly keep updating your blog. Java Developer is a wonderful career for
    IT students.To start Dream Career to become a Java developer learn from Java Training in Chennai.
    or learn thru Java Online Training from India .

    ReplyDelete
  15. Nice Post.Thanks for sharing It.Great Information.

    ReplyDelete
  16. The trap is somewhat old and, clearly, rather powerful. This parasite utilizes Trojan, to enter the framework, in spite of the fact that it can likewise be downloaded and introduced physicallyCloud Ethernet

    ReplyDelete
  17. Unit testing, joining testing, framework testing, acknowledgment testing is finished by the SQA and whenever discovered deviations or blunders, it's sent back to the software designer.Open Source crowdfunding software for sale

    ReplyDelete
  18. The author has composed this blog in the most aesthetic way. Awe inspiring!
    Simple project management software

    ReplyDelete
  19. If you do not have the serial key and if none of the IDM serial keys 2019 mentioned above you can try downloading IDM cracked version from a website........ idm crack

    ReplyDelete
  20. . These upkeep exercises can be very different, and it assists with recognizing precisely what present conveyance exercises are on be remembered for a gauge of support exertion. itools 4 crack free download

    ReplyDelete
  21. "The work of keeping something in proper order." However, https://jealouscomputers.com/how-to-screenshot-on-mac/ this definition does not necessarily fit for software. Software maintenance is different from hardware maintenance because software doesn't physically wear out, but often gets less useful with age.

    ReplyDelete
  22. wonderful article. Very interesting to read this article.I would like to thank you for the efforts you had made for writing this awesome article.Thank you for sharing any good knowledge and thanks for fantastic efforts. Igained more knowledge from your blog. Keep Doing..
    oracle training in chennai

    oracle training institute in chennai

    oracle training in bangalore

    oracle training in hyderabad

    oracle training

    hadoop training in chennai

    hadoop training in bangalore



    ReplyDelete
  23. It proved to be Very helpful to me and I am sure to all the commentators here! best email extractor

    ReplyDelete
  24. Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts. How to Scrape Data from Instagram

    ReplyDelete