what are the advantages of aws cloud config over spring cloud config? - apache-zookeeper

Based on what parameters can we decide on a config server? aws cloud config vs spring cloud config server?
if the application is developed based on Spring framework, which one will be a better option? aws-cloud-config / spring-config?
does both support XML/properties configuration other than YAML?
Can both be configured for High Availability?
Is it possible to define a workflow (for approval of changes that need to be moved to PRODUCTION, using jenkins for example?)

If your application is based on Spring, it makes sense to use Spring Cloud Config as you would be using a specific framework instead of a Generic framework like AWS config
yes, Spring Cloud Config supports both YAML and property files
Ultimately the Spring Cloud Config is a Spring Boot App, hence you can make it high available using the same strategy that we use for any Spring Application
The simplest Approval work flow would be
Configure your Jenkins Job to send mail for approval
Set-up Promotion using https://wiki.jenkins.io/display/JENKINS/Promoted+Builds+Plugin
Deploy the Artificats to the specific environment

Related

Spring Cloud OpenFeign vs WebClient

For Spring Boot based microservices communicating with each other via load-balanced clients (with Spring Cloud LoadBalancer) which client should be used, WebClient or OpenFeign?
From what I’ve read they both support Spring Cloud LoadBalancer. I know that WebClient also supports reactive, but that is not a feature we need.
Are both clients going to continue to be supported by Spring for the foreseeable future?
From what I can see Spring seems to be pushing WebClient. However, I still see development activity going on in the spring-cloud-openfeign github repo.
OpenFeign seems to be an easier/cleaner to use way of creating the clients, but are there any drawbacks compared to WebClient?

Spring cloud config with kubernetes

I was evaluating spring cloud config as a way to externalize my app configs.
Long term goal is to get my app on to kubernetes.
Is it advisable to go with spring cloud config or better adopt config map once I am in kubernetes.
It depends what you're trying to do. If you want your config centralised in a github repository or if kubernetes isn't your only deployment platform then you might prefer the spring cloud config server.
If you're just trying to externalise your configuration so that your spring boot apps play well in kubernetes then you could certainly use configmaps. Or if you don't have that many properties you might even just set environment variables. If some of the config is more sensitive then you'd want to look at secrets (a question that can get more complex, depending on how sensitive the config is).
You mention kubernetes as a 'long term goal' so perhaps you need a strategy for the short-term too. Perhaps you could use overriding with environment variables for now. It depends how much overriding you're likely to do and what your transitional platform is.

SpringBoot External Configuation

I am trying to keep External configuration in Spring Boot Project.
So I have achieved this using
a) Placing config at Git
b) Creating one config-server.
c) APplication get the config from config server.
But can I achieve this WITHOUT using External Config server?
I mean can't my application directly access configuration from GIT?
Assuming you're talking about Spring Cloud Config, it supports having the server and client in the same app, which is what you're trying to achieve. See this thread:
https://github.com/spring-cloud/spring-cloud-config/issues/100

Spring Batch Admin Manager alternative

Spring Batch Admin Manager implementation is not updated since January 2015.
Is there something else that have to be used instead?
Or should I still use Spring Batch Admin Manager to provide some generic UI for Spring Batch application?
Assuming you mean the Spring Batch Admin v1.3.1 release then:
Is there something else? Yes, if your spring batch application is a spring boot variant have a look at https://github.com/codecentric/spring-boot-admin and how to configure it checkout http://codecentric.github.io/spring-boot-admin/1.4.1/#getting-started and https://blog.codecentric.de/en/2014/09/spring-boot-admin-first-official-release/
The Spring Batch Admin Git Repository claim
NOTE: This project is being moved to the Spring Attic and is not recommended for new projects. Spring Cloud Data Flow is the recommended replacement for managing and monitoring Spring Batch jobs going forward. You can read more about migrating to Spring Cloud Data Flow here.

use spring cloud config in web application without spring boot

i want to know is there any way to use spring cloud config client without spring boot in a spring web application.
i want to use spring cloud config with #Value annotation and i don't like to use spring cloud server rest api in my web application
i have tried what developers said in Spring Cloud Config Client Without Spring Boot link but it didn't work
Yes it's possible. You will have to add spring boot but don't have to really use it (we had it working in a non-springboot app). Check this code here https://github.com/4finance/micro-infra-spring/tree/master/micro-infra-spring-config . You don't need a config server then to use the properties. I don't have a code snippet for that but you would have to create manually a spring boot context in your just to make this work. Also check this answer - Spring Cloud Config Client Without Spring Boot . Even if you will make it work it doesn't mean that the ordering will be proper.
The suggested solution then is to actually use Spring Boot :)
I provided an answer here : Spring Cloud Config Client Without Spring Boot that can help you. It's a working prototype to load property sources from Zookeeper using Spring Cloud Config Zookeeper in a webapplication without Spring Boot.