My thought would be to keep core microservices as single repo and single release.
Regards, Adi -----Original Message----- From: Myrle Krantz [mailto:mkra...@mifos.org] Sent: 31 May 2016 18:54 To: dev@fineract.incubator.apache.org Subject: Re: Microservices release question Adi, I like your approach. So within the core set of microservices, we'd take solution 2 right? Greets, Myrle *Myrle Krantz* Solutions Architect RɅĐɅЯ, The Mifos Initiative mkra...@mifos.org | Skype: mkrantz.mifos.org | http://mifos.org <http://facebook.com/mifos> <http://www.twitter.com/mifos> On Tue, May 31, 2016 at 7:21 AM, Adi Raju <adi.r...@confluxtechnologies.com> wrote: > I would expect there would be X number of microservices which are > core/heart of the application which no deployment can do away with. I > would suggest these to be released as a single package/release. > > All other microservices should be optional based on the deployment/end > user requirements. They can be released individually by mentioning the > minimum core dependency version. > > This suggestion would mean multiple projects under apache fineract, > but I feel this is where we are heading by keeping separate repo for > each microservice. > > Regards, > Adi > > -----Original Message----- > From: Myrle Krantz [mailto:mkra...@mifos.org] > Sent: 30 May 2016 23:43 > To: dev@fineract.incubator.apache.org > Subject: Re: Microservices release question > > We should create a docker image and host it on docker hub for small > organisations. These users would install docker, and run a single > command to start the system. They wouldn't even have to download our > compiled source directly; docker does that for you. We would need to > figure out how to make installing a valid certificate for their domain > in their docker image easy. > > The answer to that question for larger organisations who want to take > advantage of the scalability that microservices offer, particularly > ones which wish to adjust the code before deploying it in their > environments, will depend on how we answer the question I started this thread > with. > > Greets, > Myrle > > > *Myrle Krantz* > Solutions Architect > RɅĐɅЯ, The Mifos Initiative > mkra...@mifos.org | Skype: mkrantz.mifos.org | http://mifos.org < > http://facebook.com/mifos> <http://www.twitter.com/mifos> > > > On Mon, May 30, 2016 at 6:46 PM, Ashok <as...@confluxtechnologies.com> > wrote: > > > Hi Myrle, > > > > Release process looks very interesting and same time highly > > confusing, I am wondering how small organisations or independent > > implementors will understand this process to carry out their > > implementations without much hurdles. > > > > Regards, > > Ashok > > > > On Mon, 30 May 2016 at 7:57 PM, Myrle Krantz <mkra...@mifos.org> wrote: > > > > > Hi Fineract, > > > > > > I'm starting a new thread for a question which Roman asked in the > > multiple > > > repos thread. He asked how we'd like to release if we are > > > dividing our code into microservices. Assuming we want to do > > > clockwork releases, > > there > > > are three major alternatives: > > > > > > 1.) Release each microservice version separately, on its own > > > schedule, > > > 2.) Release a set of microservices as one release which are > > > compatible > > with > > > each other, taking the newest service version from the leafs of > > > the dependency tree, or > > > 3.) Release a set of microservice versions as one release which > > > are compatible with each other, taking the newest service from the > > > root of > > the > > > dependency tree. > > > > > > > > > 2 and 3 probably require a bit more background to understand: > > > Microservices will be dependent on each other. For example all > > > services will depend on the tenant provisioning service, and on > > > the service for managing users and permissions. > > > > > > So let's say you have services A, B, and C in multiple versions > > > which depend on each other like this: > > > > > > Av1 -> {} (no dependencies) > > > Av2 -> {} > > > Av3 -> {} > > > Av4 -> {} > > > > > > Bv1 -> Av1 > > > Bv2 -> oneOf(Av1, Av2) > > > Bv3 -> oneOf(Av2, Av3) > > > Bv4 -> oneOf(Av3, Av4) > > > > > > Service C: depends on B > > > Cv1 -> Bv1 > > > Cv2 -> oneOf(Bv1, Bv2) > > > > > > In solution one, we'd release a new version of A as soon as it was > > > complete, even if none of the other services were updated and > > > still required older versions of A. > > > > > > In solution two, we'd release a source code tar ball containing > > > Cv2, Bv2, and Av2. Even though Av3 and Av4 exists we wouldn't > > > include it in a release until all services were updated to be compatible > > > with it. > > > > > > In solution three we'd release a source code tar ball containing > > > Av4, and Bv4. We wouldn't include any version of C because there > > > would be none which is transitively compatible with the latest > > > version of A. If C is a service which not everyone deploys, this > > > may > be acceptable. > > > > > > What do you guys think? Keep in mind that in Apache the release > > > is a source code release. It's signed and it should include all > > > the source code... > > > > > > Greets, > > > Myrle > > > > > > > > > > > > *Myrle Krantz* > > > Solutions Architect > > > RɅĐɅЯ, The Mifos Initiative > > > mkra...@mifos.org | Skype: mkrantz.mifos.org | http://mifos.org > > > <http://facebook.com/mifos> <http://www.twitter.com/mifos> > > > > > -- > > Regards, > > Ashok > > > > Sent from mobile device > > > >