Building modern systems
Any Dilbert CEO can doodle a cloud on a whiteboard and say: “That is where we run our software!” So what exactly is Cloud Native and why should we care?
It is hard to find a single, concise definition of what Cloud Native is. The words “Cloud Native” might suggest software designed to live in the cloud. You may have heard of the term from the Cloud Native Computing Foundation. Their charter describes Cloud Native as a new computing paradigm that is optimized for modern distributed systems environments capable of scaling. It is open source and vendor-neutral and intended to help build sustainable systems. Software that is container-packaged, dynamically orchestrated and managed, and microservice-architected.
If software is made by developers, what are Cloud Native developers? Cloud Native developers own the lifecycle of the application. Besides writing the application code, they are also concerned with aspects like deployment, orchestration and monitoring. This is DevOps at its best!
That sounds a lot like being a full-stack developer, or knowing about the 12-factor apps. It is hard to disagree with these twelve principles. Yet we still come across software that just isn’t robust when going from development to operations.
The Cloud Native Computing Foundation (CNCF) aims to improve this by providing a suite of tools to help you with the entire lifecycle.
Docker has become a familiar buzzword because packaging and running software in containers has a lot of benefits. For example: infrastructure as code, deployment portability, and reproducible environments.
But just moving to containers doesn’t mean you can forget about operations. As Kris Buytaert pointed out at CoDe Conf 2017, you still need to deal with operational aspects such as monitoring, logging, scaling, and much more.
Cloud Native is an ecosystem of tools for software running in containers. The Cloud Native Computing Foundation is curating the technologies with experienced people in a technical oversight committee.
Yes! The idea of being in control of your software environment is something that should appeal to everyone. Cloud Native focuses on container technologies, but that should not stop you.
You may have started packaging your software in container images. For example, if you began by deploying to a cloud with Docker Compose, you might benefit from moving to Kubernetes orchestration instead. And if you really need monitoring Prometheus was built with containers in mind.
While containers started for Linux, Microsoft is evolving in the area. If your software runs on Windows take a look at their Windows container documentation and Eficode Praqma’s guide to getting started.
Maybe your software is not yet ready for containers. If that’s the case then start with your CI environment: A Jenkins master, Artifactory server, or Chef server for example. This will give you experience of using a new operational model with a limited scope of users being affected.
Combine this with configuring your systems as code, such as the Jenkins master and you will be managing your CI servers like a boss! Using Atlassian? Put your Atlassian stack into Kubernetes to make upgrades and scaling effortless.
Getting started with microservices may or may not be a good choice for you. Very often, people don’t start out writing microservices. In fact, Martin Fowler argues with the notion of a “microservices premium” that this is very reasonable. There is an overhead in learning the architectural style which does not make sense for simple systems.
Cloud Native lets you focus on how software is built and deployed, not where. It enables the DevOps ways of working, such as sharing environment definitions between developers and operations, and facilitating continuous experimentation.
As with a lot of open source, Cloud Native gives you the opportunity to benefit from a growing community. First, the Cloud Native Computing Foundation serves as an entry point to the technologies. But also many Cloud Native meetup groups have emerged in the last year. We are proudly hosting Cloud Native meet-ups in Copenhagen, Oslo, Aarhus, and Gothenburg. We are also doing a one day workshop at Cloud Native Oslo There are also relevant Slack groups, like the Kubernetes Slack and the Danish Cloud Native slack.
Why not come and join us?
We are all a bunch of tech and tool nerds. We enjoy hacking out a clever solution. Finding exactly the right commands and switches to solve the challenge at hand. Sometimes we go a bit overboard. Many developers don’t think Git is something that we should tinker with. But it is!
The tale of sharpening your knife skills
In this blog I will show you how to create snapshots of Persistent volumes in Kubernetes clusters and restore them again by only talking to the api server. This can be useful for either backups or when scaling stateful applications that need “startup data”.
Sneak peak at CSI Volume snapshotting Alpha feature
When I read Fowler’s new ‘Refactoring’ book I felt sure the example from the first chapter would make a good Code Kata. However, he didn’t include the code for the test cases. I can fix that!
Writing tests for ‘Theatrical Players’
Nicole Forsgren and the Accelerate DORA team has just released the newest iteration of the State of DevOps report. The report investigates what practices make us better at delivering valuable software to our users as measured by business outcomes. Read on for our analysis of the report, and how it can be best put to use.
The latest drivers of software delivery performance
A major challenge of software development is that our work is by and large invisible. This makes our folklore essential in business matters. Some of our commonly used arguments and visualizations are digital urban legends rather than solid foundations for informed decisions. Here, we’ll go through a few examples and some measures to address our misconceptions.
How the stories we tell influence our decisions
When you embark on your cloud native journey there will be important choices to make about cloud providers, continuous deployment, environments’ setup and separation. This guide will help you make the right choices by sharing lessons learnt from running cloud native apps in production.
Kubernetes has become the de facto container orchestration platform. When we help clients of different sizes and domains start their cloud native journeys in Kubernetes, we assist them in making sound decisions and technology choices. There is no one-size-fits-all solution when it comes to choosing cloud providers, CI tools, continuous deployment pipelines etc., so it is important to make the right decisions at the start. Failing to do so can be very costly in terms of lost time and money.
How to make the right technical choices on your cloud native journey
Learn how Docker and Kubernetes work and the key benefits they bring. Using real demos, I show how Docker is a great packaging and distribution technology, and how Kubernetes provides a powerful runtime for containerized applications.
Watch this introduction to Docker and Kubernetes at the Trondheim Developer Conference (TDC)
In the world of Agile and DevOps we use many figures, charts and diagrams to argue and reason about our world and how we prioritize and make choices. However, at all levels of the organization, we misuse and misinterpret figures. It’s time to be explicit, measure the right things and act on them. Watch this talk from DevOpsDays Zurich in May 2019.
Watch this talk from DevOpsDays Zurich
Summer is a great time to catch up on reading, whether you’re at the beach, in a summer house, or cozy at home. If your book backlog is on the short side, don’t worry! We compiled a list of great books for summer reading.
Inspiration for your summer reading list
At Eficode Praqma we believe in knowledge sharing, and we love to teach our technical expertise. Watch this series of videos to learn how traefik reverse proxy works step by step.
A video seminar to learn how Traefik works
Hear about upcoming events in Scandinavia, latest tech blogs, and training in the field of Continuous Delivery and DevOps