Developing distributed systems can be challenging. Complexity is moved from the application layer to the network layer and demands greater interaction between services.
Making your code "cloud-native" means dealing with 12-factor issues such as external configuration, statelessness, logging, and connecting to backing services.
The Spring Cloud suite of projects contains many of the services you need to make your applications run in the cloud.
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state).
Features of Spring Cloud:
Distributed/versioned configuration
Service registration and discovery
Routing
Service-to-service calls
Load balancing
Circuit Breakers
Global locks
Leadership election and cluster state
Distributed messaging
Spring Cloud Netflix:
Spring Cloud Netflix features:
Service Discovery: Eureka instances can be registered and clients can discover the instances using Spring-managed beans
Service Discovery: an embedded Eureka server can be created with declarative Java configuration
Circuit Breaker: Hystrix clients can be built with a simple annotation-driven method decorator
Circuit Breaker: embedded Hystrix dashboard with declarative Java configuration
Declarative REST Client: Feign creates a dynamic implementation of an interface decorated with JAX-RS or Spring MVC annotations
Client Side Load Balancer: Ribbon
External Configuration: a bridge from the Spring Environment to Archaius (enables native configuration of Netflix components using Spring Boot conventions)
Router and Filter: automatic registration of Zuul filters, and a simple convention over configuration approach to reverse proxy creation
NewRelic
is an APM (Application performance management) tool, it helps in monitoring the
JVM, databases, transactions, external services, etc.
New Relic has an agent, which is a small piece of code that sits inside the web application and watches what the web page code is building while it’s building web pages.
The agent measures how long the code takes to build the web page and reports it back to the user. It informs the user of the time taken for a page to load and specifies if any factors are delaying the process.
It displays the load time for users all across the globe accessing the web application and it follows it all the way down, right to the code.
So the user will be able to determine if the longer load time is caused by something in your server, code, network, or in the browser, etc.
Heroku is a Platform as a Service (PaaS), delivering tools that enable software development. Heroku, as a PaaS, allows business to quickly deploy, build, manage, and scale enterprise-level applications while bypassing infrastructure headaches normally required to host an enterprise quality application.
It acts as the middle-man between hosting/infrastructure and Salesforce.
Advantages
Easy setup - as a PaaS you don't need to know how to install and configure Apache, nginx, unicorn, passenger, MySQL, Postgres etc
Easier to scale initially - spin up more dynos, size up DBs etc
Great plugin support for third party apps
Disadvantages
Pricey - after the free tier the pricing is steep, you will pay literally 3x - 5x more than a comparable performing setup through an IaaS
Performance - as highlighted by rap genius recently the switch away from being purely a Rails PaaS and the updates to the routing engine has worse performance which translates to more dynos and still higher costs
Lock-In - since you aren't managing your infrastructure you can't move it to take advantage of savings
Single point of failure - granted it happens rarely but it's there. Architecting around this on your own requires a lot of experience but you'll be glad once you get past the learning curve.
We can perform operations on heroku by simply creating an account using below link.
Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, or certificates.
Vault can be used when we are working on below Concepts:
1)Database credentials
2)API keys for external services
3)credentials for service-oriented architecture communication.
4)Securing Configuration files
...etc
Key Features of Vault:
Secure Secret Storage: Arbitrary key/value secrets can be stored in Vault. Vault encrypts these secrets prior to writing them to persistent storage, so gaining access to the raw storage isn't enough to access your secrets.
Dynamic Secrets: Vault can generate secrets on-demand for some systems, such as AWS or SQL databases. For example, when an application needs to access an S3 bucket, it asks Vault for credentials, and Vault will generate an AWS keypair with valid permissions on demand. After creating these dynamic secrets, Vault will also automatically revoke them after the lease is up.
Data Encryption: Vault can encrypt and decrypt data without storing it. This allows security teams to define encryption parameters and developers to store encrypted data in a location such as SQL without having to design their own encryption methods.
Leasing and Renewal: All secrets in Vault have a lease associated with them. At the end of the lease, Vault will automatically revoke that secret. Clients are able to renew leases via built-in renew APIs.
Revocation: Vault has built-in support for secret revocation. Vault can revoke not only single secrets, but a tree of secrets, for example all secrets read by a specific user, or all secrets of a particular type. Revocation assists in key rolling as well as locking down systems in the case of an intrusion.
Amazon Honeycode is new fully-managed AWS service gives you the power to build powerful mobile & web applications without writing any code.
Amazon Honeycode is available in beta.
Honeycode comes with built-in common application templates that users can pick to start building their own apps. Some of these templates come in handy for those looking to build surveys, task trackers, inventory management system or event management process.
It uses the familiar spreadsheet model and lets you get started in minutes. If you or your teammates are already familiar with spreadsheets and formulas, you’ll be happy to hear that just about everything you know about sheets, tables, values, and formulas still applies.
The service uses an underlying AWS database, allowing data to be linked, filtered and sorted, but with a point-and-click interface and a data entry structure reminiscent of a spreadsheet.
The service is free for applications with up to 20 users, with charges kicking in for larger applications.
Docker is a set of platform as a service (PaaS)that uses OS-level virtualization to deliver software in packages called containers.
Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.
Docker allows applications to use the same Linux kernel as the system that they're running on and only requires applications be shipped with things not already running on the host computer.
For some reason, Docker really doesn’t want people to run on 32-bit.
Below are the steps.
Download choco from below link:https://chocolatey.org/docs/installation
Once installed,issue below steps.
choco install docker-machine -y
docker-machine create --driver virtualbox default
docker-machine env | Invoke-Expression
That’s it! You can verify that it’s working correctly by running “docker version”: