What is a Container? A container is simply like a software unit/wrapper that will package everything- your application code, app-related dependencies, etc. together. You can assume that you get a portable environment to easily run your application. You can easily manage the container on your own (operations like starting, stopping, monitoring, etc.). Why Kubernetes? Suppose, you have a requirement for running 10 different applications (microservices) ~ 10 containers. In case you need to scale each application for high availability, you create 2 replicas for each app ~ 2 * 10 = 20 containers. Now you have to manage 20 containers. Would you be able to manage 20 containers on your own? (20 is just an example, there could be more based on the requirement). It would be difficult, for sure. Orchestration A Container Orchestration tool or framework can help you in such situations. It can help you automate all the deployment/management overhead. One such Container Orchestration tool is Ku
In the computing world, when we are looking at performance improvement for quick wins, we first look into caching. Caching stores frequently accessed data in a fast and convenient way, reducing the load on your database. It is helpful to access more frequent data quickly and to avoid any additional computation that was done to fetch and store previous data. Caching stores the data for a small duration of time and turns slower operations into faster performance. Caching is largely divided into two types: a local cache and external cache. A local cache uses the JVM heap for storage, and a remote (or cluster) cache uses in-memory stores such as Redis or Memcached. Types of Caching Strategies and Their Challenges Local Cache: A local cache is easier to implement by having some sort of storage within the service (say, a Hashmap) but leads to a cache coherence problem. That is, being a local cache, it will be different per server and lead to inconsistent data. External Caches: External cache