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 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 can be the Ops in your DevOps
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!
Why should I learn Git? I'm just a Software Developer
The tale of sharpening your knife skills
What testing steps should you include in your Continuous Delivery pipeline? Don’t just string together existing manual processes - use simple, collaborative tools to design something better!
Pipeline - The Game that Delivers!
A new card game to design Continuous Delivery pipelines
Praqma joins the RADON project
Unlocking the Benefits of Serverless FaaS for the European Software Industry
In the Accelerate book, researchers explain several metrics which they have shown will measure the performance of a DevOps organization, and crucially, drive performance of the organization as a whole. I will explain why this is important, using an analogy with your risk of a heart attack.
Winning with DevOps and Reducing Your Risk of a Heart Attack
Clinical Trials and Software Process
Your repositories are cluttered, you’re storing irrelevant builds, and your disks are full. Luckily, you’ve come to the right place for advice. Here’s how to set up automatic cleanup.
Artifactory Retention Policies
How to set up automatic Artifactory repository cleaning
In many security and safety critical environments there can be requirements for long-term reproducibility of artifacts that are created. In this talk from NDC Tech Town, Mike Long shows how to use Docker to create binary reproducible applications from a C++ application.
Binary Reproducible Builds
How to Create Binary Reproducible Builds using Native Build Tools and Docker
In distributed architectures networking is usually taken as a given. However, when it does not function as we expect it is often hard to understand the reason. This blog post outlines some general insights into networking with more specific techniques for understanding the networking infrastructure of a Kubernetes cluster.
Debugging Kubernetes Networking
How to Find a Needle in a Virtualized Network
Choosing the perfect CI/CD tool for your project can be tricky. In this post we compare two managed CI/CD services - CircleCI and Google Cloud Build. Sami Alajrami is on hand to score our exciting CI/CD matchup.
CircleCI vs Google Cloud Build
How to choose the CI/CD tool that’s right for you
Simply aligning your IT capability with your business goals isn’t enough to grow your company. To achieve real IT-enabled growth you’ll need to build on a foundation of technical excellence and thanks to DORA that’s something you can now actually measure.
Avoiding the Agile Alignment Trap
Why a new software process won’t fix your delivery effectiveness
Setting up an on-premise highly available Kubernetes cluster comes with many challenges. Rancher can help build a production grade cluster. Watch our Certified Kubernetes Administrator Henrik Hoegh set up a cluster and test the deployment.
How to install a Kubernetes Cluster with Rancher
A video guide to setup a highly available on-premise Kubernetes Cluster
Hear about upcoming events in Scandinavia, latest tech blogs, and training in the field of Continuous Delivery and DevOps