Technology enthusiast. Working as a cloud solution architect at a Fortune 500 company. Cooks, travels, games and enjoys life with friends and family.
Image for post
Image for post
FastAPI and Uvicorn Python Docker image. Image by pradpoddar.

FastAPI and Uvicorn often comes together for many modern applications and micro services. Running them as Docker containers makes total sense for micro services on any cloud platform.

FastAPI

FastAPI is a well-known Python framework for building APIs based on standard type hints.

Starlette is used for the web parts.

Starlette is a lightweight ASGI framework/toolkit, which is ideal for building high performance asyncio services.

ASGI (Asynchronous Server Gateway Interface) is a successor to WSGI, intended to provide a standard interface between async-capable Python web servers, frameworks, and applications. Where WSGI provided a standard for synchronous Python apps, ASGI provides one for both asynchronous and synchronous apps, with a WSGI backwards-compatibility implementation and multiple servers and application frameworks. …


Image for post
Image for post
Photo by Jai Kumar on Unsplash

Docker is good, but it has its challenges. Two of the most popular concerns traditionally have been managing image size and reducing vulnerability and attack surface of the containers.

It has been a traditional practice to keep separate docker files for each environment or platform for an app e.g. a dev/sdk docker image for developers, a debug or performance test oriented image for qa/test environments and a slimmed down just what you need image for production. There may be more, varies from team to team.

But maintaining multiple docker files is a pain, it’s time consuming and error prone. …


Image for post
Image for post
World of Robots at CES 2021. Image by pradpoddar.

The concept of robot or droid is nothing new. But, most of the times when we think of robots, the most prominent images that flash in our mind are probably what we have seen in the famous movies. Times are changing. Robots are coming to production. CES 2021 show cased some incredible innovations and is clearly showing huge confidence in a world of robotics gradually opening not just in industrial sectors but also in our day-to-day life.

Home Robots

AI is no longer complex algorithms, machine learning and neural networks. AI is now personal and predictive. AI is now in daily life.

Samsung Bot Care is a companion robot. This robot always stays around you, observes you and learns from your behaviors and patterns to recognize your needs and provide realistic assistance. Using AI, it understands your habits. It can remind you that you are too long on your computer and need to take some rest. …


Image for post
Image for post
Distributed cloud around the world. Image by pradpoddar.

Traditionally when we think of cloud, we typically think of the latest technologies, services, tools, business benefits — we generally don’t think of where these services are running. That’s the whole point — cloud gives you freedom from thinking about where it is running, how it is running etc.

Historically, location has never been relevant in the definition of cloud. Location is abstracted away from services, which kind of inspired the term “cloud” in the first place.

The need

As we see more organizations from different industries and parts of the world come to cloud, the model of cloud adoption will diversify from pure public cloud models to hybrid and multi cloud models. In public cloud models the responsibility of hardware and software infrastructure is on the cloud providers, and organizations benefit from the scale, elasticity and expertise of the large public cloud providers. On the other hand, in a hybrid model the organizations will have to architect, provision, own and maintain one half of the cloud which is its on-prem installations without being able to leverage the services of cloud providers. …


Spiderman reading about mesh.
Spiderman reading about mesh.
Photo by Road Trip with Raj on Unsplash

We are all seeing rise of microservices. While Docker is helping teams with development, Kubernetes has gradually become platform of choice for runtime orchestration of the containers. Many companies have successfully improved use of Kubernetes moving their applications into microservices world and while doing so has effectively increased footprint of the microservices manifold. These organizations now face runtime challenges of efficiently routing, monitoring and securing the networking between these microservices — not because we don’t know how, but because the sheer increase in number and volume calls for a dedicated and efficient solution. …


Image for post
Image for post
Cloud Observability by pradpoddar

With the rapid adoption of Microservice architecture pattern for distributed systems, we are seeing how a single monolithic application can get decomposed into multiple loosely coupled services. These services run as docker containers, many times horizontally scaled to multiple instances in production environment and orchestrated by complex and advanced platform engines like Kubernetes.

It’s not always an easy task. While developing and deploying is one part of the equation, another important aspect is managing such huge number of micro services and making sure everything is running fine. At any moment in time, operations and support team need to know what is happening in the environment to diagnose any issues and take necessary corrective and preventive measures. …


Image for post
Image for post
Photo by Sharon McCutcheon on Unsplash

This world is not just for humans and animals and plants. Planet earth now has more connected devices and equipment than total population of human beings.

It is reported by research institutes that right now there are more than 20 billion connected devices in the world. In 2020, for the first time, there are more IoT connections than there are non-IoT connections. By 2025, it is expected that there will be more than 30 billion IoT connections, almost 4 IoT devices per person on average.


Image for post
Image for post
Serverless: Image by pradpoddar

Back in the days if anyone want to run an application, they first would need to contact their company’s IT team. The IT team and the App team would go through multiple meetings, emails and come up with a list of things like servers, storage that would be required to host the application. Budget will be allocated. Work will be designated. Things will be bought or borrowed, then things will be done, then some more things will be done and then one fine day an email will come saying your server is ready. …


Image for post
Image for post
Kubernetes Release Logo from kubernetes.io

Kubernetes just announced release of version 1.20, this will be final release of 2020. Congratulations to the Kubernetes Community. It’s a solid release for Kubernetes which has seen increased use in production cloud world every single year since its inception.

“This release consists of 42 enhancements: 11 enhancements have graduated to stable, 15 enhancements are moving to beta, and 16 enhancements are entering alpha. This is one of the most feature dense releases in a while.” — Kubernetes 1.20 Release Team.

Out of all the major changes Docker Deprecation is taking everyone by surprise. Yes, there is impact for sure.


Image for post
Image for post
Docker Best Practices

Docker has revolutionized the way we build, deliver and run applications. As more and more developers work on Docker, it is important to develop Docker images which will survive test of time without causing major impacts to application performance, security, scalability and availability.

Below I have brought together some fundamental to advanced Docker development best practices and recommendations, hoping it would help you develop, own and maintain great Docker images.

One thing at a time

Kindly build a docker image which represents a single thing i.e. one app, or one functionality, or one module of a bigger app etc. Don’t mix multiple things in one docker image. Each container should have only one concern. For example, if it is a NGINX image, we know that is what it will be in that image, I won’t expect Apache in that image. Similarly, an OpenJDK image will have JDK, not node.js …

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store