Path: csiph.com!aioe.org!5Avcpu9drOe6MAssky6/+Q.user.gioia.aioe.org.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Going from java monolith to microservice Date: Sat, 16 Jan 2021 15:24:08 -0500 Organization: Aioe.org NNTP Server Lines: 73 Message-ID: References: NNTP-Posting-Host: 5Avcpu9drOe6MAssky6/+Q.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 X-Notice: Filtered by postfilter v. 0.9.2 Content-Language: en-US Xref: csiph.com comp.lang.java.programmer:39664 On 1/16/2021 9:29 AM, mike wrote: > First I want to say that this is not a pure "how do I do this in > java" - question. So if you are not interested or don't have any > experience with the topic feel free to skip. > > We have a library that consists of different maven modules. It is > basically different abstractions to test NETCONF devices. > > We hear a lot of positives using microservices since it will be > easier to deploy separate and independen. So I thought that it might > be possible to transition over to use microservices since products > tends to be virtualized in the cloud. > > Do you have any idea on how to do this journey? My guess is to make a > step to step transition. We need to support the old way of using the > monolith for our old products. > > My first thought will be how to use the service? Today testers write > java code but what will the testing look like in the future? Have > anyone gone from using java to microsevice. What will be the main > difference. I know my questions are vague and that is where you come > in. I need guidance and advice in this matter. I would really > appreciate some advice. Micro-services vs less granular services vs monolith is a well-known discussion - you should be able to find hundreds of articles and books about that topic from a general perspective. But I am somewhat puzzled by the talk about library/modules and test. In its core micro-services is about the runtime separation of services. Let us say that before is: Tomcat port 8080 a.war with libx.jar and liby.jar, exposing http://xxxxxx:8080/a/foo b.war with libx.jar and libz.jar, exposing http://xxxxxx:8080/b/bar And after is: Spring Boot a.jar with libx.jar and liby.jar, exposing http://xxxxxx:8081/a/foo Spring Boot b.jar with libx.jar and libz.jar, exposing http://xxxxxx:8082/b/foo You have not changed the libraries. And I do not see any reason why you would change test either. You have gotten some benefits. The services can be scaled independently (you can run 2 instances of a and 10 instances of b). The services do no longer share the global Tomcat context (database connection pools etc.). If before is: Tomcat port 8080 kitchensink.war with libx.jar and liby.jar and libz.jar, exposing http://xxxxxx:8080/kitchensink/foo and http://xxxxxx:8080/kitchensink/bar then splitting up in micro-services will force a separation of code and dependencies. And that may impact a lot more. But that is not really a micro-service thing - you would have to do the same if you split kitchensink.war in a.war and b.war. Arne