Development Environment Project Overview

  • By Aaron
  • Thu 28 November 2019
  • Updated on Thu 28 November 2019

Objectives

As a developer, I am interested in creating application for both fun and profit. I have a host machine at home with sufficient resources to build a sizeable development environment. On this hardware, I will create a local environment with all the bells and whistles that would be found in a sufficiently advanced software development company with a sizable infrastructure.

Building this infrastructure will advance my skill set and create a suitable environment for personal projects.

Technologies

I plan to follow the Trail Map laid out by the Cloud Native Computing Foundation, one of the largest sub-foundations of the Linux Foundation.

Host Virtualization: Linux KVM

Host virtualization is not something many of us deal with. It is generally a solved problem, handled behind the scenes by cloud providers. For my own understanding, I will be using Linux-KVM to create and manage the hosts used for this infrastructure.

It has been said the Amazon AWS is moving away from Xen, favoring KVM, but I couldn't find any hard evidence of that in the form of a press release, only an excerpt in the C5 instance type FAQ:

C5 instances use a new EC2 hypervisor that is based on core KVM technology.

Deployment Environment: Kubernetes

In order to understand Kubernetes at sufficient depth to achieve a Kubernetes Certification, I will be creating a k8s cluster from scratch, doing everything manually without tools such as kops, kubeadm, or Kubespray.

Once a concrete understanding of deployment and management has been obtained, automation tools will be explored.

Containers: Docker

The primary container type deployed in the k8s cluster will be Docker. This choice was made because the development team I work with uses Docker for its deployments, and because it seems to be the most popular and widely supported method.

In the future, it might be prudent to explore other types of containers, such as virtual machines.

Programming Languages: Python and Go

It would appear that many tools I use on a daily basis are written in Go. I am well-versed in Python, but I feel it is perhaps time to expand my language support.

There is a handful of projects I would like to build, and to create them with their destination environment in mind seems like the best way to start. This, to me, means building a number of stand-alone micro-services that can be easily deployed as a Docker container.

Proejct Links

This section will contain links to each article created for this series.