can anyone tell/share the de-facto way of implementing auto-scaling in Spring Cloud utilized micro-service architecture? Assumption is no container orchestration such as Kubernetes, ECS, EKS. Expecting 2 separate answers in 2 below environments
In on-premise infra
In Cloud
Related
I need some help in understanding how we implement service discovery for microservices in kubernetes.
Im going through some tutorials on spring boot and noticed that wr need to use Eureka discovery for implementing service discovery for maintaining communication b/w microservices. But my question is if we deploy those spring boot microservices in kubernetes, do we still need to use Eureka tool? We can use kubernetes services for implementing service discovery and load balancing right?
Kubernetes orchestration platform provides CoreDNS for Service discovery. Micro services when they get deployed to the platform can utilise the services by default no need to implement it unless if there is specific requirements which is not satisfied . Kubernetes Loadbalancer services type can be used for load balancing of services
For microservices architecture not in the cloud :
What is the difference between the load balancer of Kubernetes and the load balancer of spring cloud?
what are the advantages of implementing Eureka and spring boot load balancer when using Kubernetes for deployment rather than using Kubernetes load balancer and kubernetes service discovery?
Quite a complex question but here are my thoughts on the matter:
Before actually answering the questions, I must say that my experience setting up Kubernetes load balancer outside of public clouds is a hassle so I wouldn't recommend the approach but, assuming that it is not an issue for you, the main difference is how things are set ut. I would say that the biggest advantage of having it in Kubernetes is that you may also have service mesh solution like Istio that gives you other advantages that just load balancing. Furthermore, it would be easier to do canary (or other special type of) deployments with infrastructure load balancing than with Spring.
The only real advantage I see is if you have different teams with responsibility of the infrastructure, deployment and coding. Say if the Kubernetes team is responsible for creating services, deployments, etc and is overloaded, you might get code out faster if your dev team has capacity and competence but, again, there would be no point using Kubernetes then. Or in case you cannot actually create the LoadBalancer service in Kubernetes (as mentioned - not always straightforward in non cloud env)
On a side note, if you are on the way to deploying Kubernetes internally and want to get it to work, have a look at Metallb
We have developed some spring batch jobs. I understand Spring Cloud Data Flow is the recommended solution to orchestrate spring batch jobs and it requires platforms such as Cloud Foundry and Kubernetes. However, our company does not allow these platforms. We use docker containers on azure. Azure kubernetes is also not an option. What are the other solutions for orchestration?
We are currently working on a approach which will work with collaboration of multiple microservices to provide us with solution.
Dataflow example:
These services will be deployed in ECS with ALB in front of it. I want to stitch together a workflow for the system and needed help with the following:
We plan to use Route 53 DNS service for the Service Discovery. I know that conductor uses Eureka client for service discovery. Is it possible just to swap out of use DNS based implementation rather than Eureka??
Can Conductor be deployed as docker images in an ECS cluster? Can I create this internal to ECS cluster and not deploy it on EC2 servers? Any documentation that will help? Do we maintain Docker Images or we need to create our own?
I am trying to learn and create a microservice using Spring Cloud. I am using Spring mvc and Spring Boot for development. I added separate Spring Boot application for both Eureka server and Zuul client. I have three Spring Boot application now. One Sureka server, one for Zuul routing and third one is for my microservice application. I run the Eureka server and the microservice and Zuul found to be running properly in Eureka server UI.
My doubt is that, I am planned to use routing and service discovery in my microservice. So I have a total of three Spring Boot applications. Can I deploy these three applications into AWS Elastic Beanstalk?
When I exploring I found that Pivotal Cloud Foundry topic. Since I am planing to use AWS Elastic Beanstalk. So what is the role of Pivotal Cloud Foundry in my application?
I am still confused about microservice development using Spring Cloud.
So there are two elements in your confusion. Is Amazon Beanstalk suitable?
So answer is yes. but you have overhead of orchestrating various services of amazon over then. Basically Amazon Elastic Beanstalk is more form based which means you need to tell what exactly you want to do with application for example route setup , scaling mechanism , application portability, application health management , Integration with external log aggregators etc. This is big learning curve to many people (including me :) ). Where as these with PCF these things are easy and straightforward and sometimes implicitly done.
Now Can I use pivotal cloud foundry with amazon? answer will be absolutely yes.
Pivotal cloud foundry is Wrapper written over open source Cloud Foundry project.
It is more succinct PaaS option than Amazon Beanstalk. You can host PCF on amazon ec2 ( IaaS )boxes using BOSH software. To answer you PCF is a alternative to Amazon Beanstalk. You don't need PCF is you want to use Amazon Beanstalk and vice versa.