{"id":219,"date":"2018-10-16T03:46:53","date_gmt":"2018-10-16T03:46:53","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/10\/16\/the-cloud-native-engineer-role\/"},"modified":"2018-10-16T03:46:53","modified_gmt":"2018-10-16T03:46:53","slug":"the-cloud-native-engineer-role","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/10\/16\/the-cloud-native-engineer-role\/","title":{"rendered":"The Cloud Native Engineer Role"},"content":{"rendered":"<p> Aug 17, 2018<\/p>\n<p>\n by <a href=\"https:\/\/container-solutions.com\/author\/catalin\/\">Catalin Jora<\/a> <\/p>\n<p>Cloud computing changed the required skills for software engineers and system administrators. IT departments that didn\u2019t continuously researched and adopted new technologies are usually caught off-guard when they decide to \u201cmove to the cloud\u201d. A cloud native IT department requires new skills as the software they have will need refactoring and repackaging to run and take advantage of the new environment, the cloud. About those skills and responsibilities I\u2019ll be speaking in this article. Internally, we call this role the cloud native engineer*.<\/p>\n<h4>A cloud native engineer needs to take an application from a repository through a continuous integration and delivery pipeline. During this journey, she would make sure that the code builds, passes the tests, gets deployed safely and secure up to the to the production environment.<\/h4>\n<p>The <a href=\"https:\/\/raw.githubusercontent.com\/cncf\/landscape\/master\/landscape\/CloudNativeLandscape_latest.png\" target=\"_blank\">list<\/a> of relevant technologies in the cloud native context is overwhelming:<\/p>\n<p><a href=\"http:\/\/container-solutions.com\/content\/uploads\/2018\/08\/CloudNativeLandscape_latest.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"1125\" src=\"http:\/\/container-solutions.com\/content\/uploads\/2018\/08\/CloudNativeLandscape_latest.png\" width=\"2000\" \/><\/a><\/p>\n<p>But don\u2019t worry, you don\u2019t need to know them all. You\u2019 can\u2019t either have \u201c3+ years of production experience\u201d as some naive recruiters would expect, because it\u2019s a very new field. By the way, there\u2019s another map for <a href=\"https:\/\/raw.githubusercontent.com\/cncf\/landscape\/master\/serverless\/CloudNativeLandscape_Serverless_latest.png\" target=\"_blank\">serverless<\/a>.<\/p>\n<p>So let\u2019s go one by one over the required building blocks of every cloud project, the bread and butter of the cloud native engineer skillset**.<\/p>\n<h4>Software Architecture (from monoliths to microservices and serverless)<\/h4>\n<p>You\u2019ll need to figure out if you\u2019re dealing with a micro-service architecture or with a monolith. If you\u2019re not assigned to a greenfield project, most of the time you\u2019ll have to move a project from a monolith to microservices. Missing the knowledge about microservices? Check a microservice-demo app here: <a href=\"https:\/\/microservices-demo.github.io\">https:\/\/microservices-demo.github.io<\/a><br \/>\nTo understand what microservices are all about, read <a href=\"https:\/\/twitter.com\/martinfowler\">Martin Fawler<\/a>\u2019s <a href=\"https:\/\/www.martinfowler.com\/articles\/microservices.html\" target=\"_blank\">article<\/a> on the subject. <a href=\"https:\/\/twitter.com\/samnewman\">Sam Newman<\/a>\u2019s <a href=\"https:\/\/samnewman.io\/books\/building_microservices\/\" target=\"_blank\">book<\/a> is the \u201cbible\u201d in this domain.<\/p>\n<h4>Building the software (development and build scripts)<\/h4>\n<p>Once you know with what type of architecture you\u2019re dealing, you\u2019ll need some basic understanding on how to run and build that project. If you need to adjust\/debug the application, experience or familiarity with the programming language is required.<\/p>\n<h4>Packaging (containers: Docker | Serverless)<\/h4>\n<p>In the cloud native context, applications get delivered as containers (serverless is gaining traction as well). So you\u2019ll need to be able to understand and package applications into these new standards. My colleague\u2019s (<a href=\"https:\/\/twitter.com\/adrianmouat\" target=\"_blank\">Adrian Mouat<\/a>) <a href=\"http:\/\/shop.oreilly.com\/product\/0636920035671.do\" target=\"_blank\">Using Docker book<\/a> is probably your best option for getting up to speed.<\/p>\n<h4>Continuous integration\/delivery (CI\/CD tools like Jenkins, GitLab, Travis and friends)<\/h4>\n<p>Once the code (both applications and infrastructure) is written, you will need to deploy it somewhere. Most of the \u201cold\u201d continuous integration tools are still alive and kicking and they\u2019ve learned how to do continuous delivery. New tools are emerging, but it looks like Jenkins is still the standard, mainly due to poor alternatives. The CI tool will drive the entire delivery process, so designing a good pipeline will result in a better developer experience and faster response to failures\/bugs. All types of tests and code quality tools will have to get integrated here as well.<\/p>\n<h4>Container Schedulers and Orchestrators (Kubernetes, Docker Swarm, DC\/OS)<\/h4>\n<p>If you package your application in containers you\u2019ll need to understand their lifecycle. <a href=\"https:\/\/www.kubernetes.io\" target=\"_blank\">Kubernetes<\/a> is becoming the standard in this space, with managed solutions from all major cloud providers. Go over the basic <a href=\"https:\/\/kubernetes.io\/docs\/tutorials\/\" target=\"_blank\">tutorials<\/a> or look for a training if you intend to go deeper into the subject, as this will be your new playground once the apps will get deployed.<\/p>\n<h4>Building the infrastructure (the operations part)<\/h4>\n<p>OK, you have some application code that works. Your next step (for greenfield projects it\u2019s the first step) is to build the infrastructure where that code will run. This involves a mix of managed services and writing code for the missing parts. Tools like <a href=\"https:\/\/www.terraform.io\/\" target=\"_blank\">Terraform<\/a>, <a href=\"https:\/\/aws.amazon.com\/cloudformation\/\" target=\"_blank\">Cloud Formation<\/a>, <a href=\"https:\/\/www.ansible.com\/\" target=\"_blank\">Ansible<\/a> are the usual suspects in this area.<\/p>\n<h4>Monitoring and observability<\/h4>\n<p>Monitoring plays a central role in a distributed system. The old tools didn\u2019t manage to catch up with the new landscape, so you\u2019ll need to look into SaaS solutions, the default services offered by your cloud, or rely on open source projects (like <a href=\"https:\/\/prometheus.io\/\" target=\"_blank\">Prometheus<\/a>\/<a href=\"https:\/\/grafana.com\/\" target=\"_blank\">Grafana<\/a>).<\/p>\n<h4>Cloud computing building blocks<\/h4>\n<p>For most companies, the infrastructure will get replaced by an API, some credentials and a bill that will track the usage. Understanding of cloud computing primitives like compute units, databases, storage, network for whatever cloud\/infrastructure provider you are using is mandatory. Understanding pricing for the new services will help you avoid nasty surprises at the end of the month.<\/p>\n<p>Once your IT department implements those block, there are other areas that usually gain attention:<\/p>\n<ul>\n<li>Deployment patterns for your application\n<ul>\n<li>Canary deployments<\/li>\n<li>Blue\/Green<\/li>\n<li>GitOps<\/li>\n<li>Networking for microservice architecture<\/li>\n<\/ul>\n<\/li>\n<li>Service mesh (<a href=\"https:\/\/istio.io\/\" target=\"_blank\">istio<\/a>, <a href=\"https:\/\/www.envoyproxy.io\/\" target=\"_blank\">envoy<\/a>)<\/li>\n<li>Security for cloud architecture\n<ul>\n<li>container vulnerability scans<\/li>\n<\/ul>\n<\/li>\n<li>Secrets management<\/li>\n<\/ul>\n<p>The shift to cloud computing reflects as well in the technical skills required to develop and operate the applications on this new platforms. Continuous learning is the only way you can keep up. If you can\u2019t do it at your current workplace, probably it\u2019s time to look for a new challenge somewhere else.<\/p>\n<p>Notes<\/p>\n<p>*The skillset and responsibility of this role are different than the Google\u2019s <a href=\"https:\/\/landing.google.com\/sre\/book\/chapters\/introduction.html\" target=\"_blank\">Site Reliability Engineer<\/a> role: \u201cSRE is what happens when you ask a software engineer to design an operations team\u201d \u2013 Benjamin Treynor Sloss \u2013 SRE Founder. The DevOps Engineer is a weird name\/role that is too vague and always in flux to make comparisons, but it does overlap on some of the skills.<\/p>\n<p>**While shorter than the cloud native landscape, this list is overwhelming as well. I initially assembled it for a colleague (hi <a href=\"https:\/\/twitter.com\/riccardomc\" target=\"_blank\">Riccardo<\/a>!) but it is useful for everybody who wants to make a career step in this direction. Most of the people will know the basics and have deep knowledge in a few areas that interest them most.<\/p>\n<p>Looking for a new challenge? We\u2019re hiring!<\/p>\n<p><a href=\"https:\/\/cta-redirect.hubspot.com\/cta\/redirect\/2252258\/e04cb4d2-0ea4-4180-abb3-3765a07b31c5\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"C\" height=\"1239\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/2252258\/e04cb4d2-0ea4-4180-abb3-3765a07b31c5.png\" width=\"2176\" \/><\/a><\/p>\n<p> <a href=\"https:\/\/container-solutions.com\/the-cloud-native-engineer-role\/\" target=\"_blank\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aug 17, 2018 by Catalin Jora Cloud computing changed the required skills for software engineers and system administrators. IT departments that didn\u2019t continuously researched and adopted new technologies are usually caught off-guard when they decide to \u201cmove to the cloud\u201d. A cloud native IT department requires new skills as the software they have will need &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw93\/index.php\/2018\/10\/16\/the-cloud-native-engineer-role\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The Cloud Native Engineer Role&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-219","post","type-post","status-publish","format-standard","hentry","category-kubernetes"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/comments?post=219"}],"version-history":[{"count":0,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/posts\/219\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/media?parent=219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/categories?post=219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw93\/index.php\/wp-json\/wp\/v2\/tags?post=219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}