<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Development on Andrew Khoury</title><link>https://www.drewkhoury.com/tags/development/</link><description>Recent content in Development on Andrew Khoury</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><copyright>Copyright © 2021, Andrew Khoury; all rights reserved.</copyright><lastBuildDate>Sat, 28 Aug 2021 14:18:09 +0000</lastBuildDate><atom:link href="https://www.drewkhoury.com/tags/development/index.xml" rel="self" type="application/rss+xml"/><item><title>3 Musketeers for an epic Developer Experience</title><link>https://www.drewkhoury.com/post/gsd/3-musketeers-for-an-epic-developer-experience-8676ddaf33b2/</link><pubDate>Sat, 28 Aug 2021 14:18:09 +0000</pubDate><guid>https://www.drewkhoury.com/post/gsd/3-musketeers-for-an-epic-developer-experience-8676ddaf33b2/</guid><description>
&lt;p>We all want to reduce toil and improve the developer experience (when starting new applications or joining the team). Developers have had to invest significant time in creating production-ready pipelines when building new products and configuring their workstations when joining teams. Their workstations may not run all the same tests as their pipeline and thus they’re left with &lt;a href="https://www.linkedin.com/feed/hashtag/?keywords=slowfeedback&amp;amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6835918781475246080">#slowfeedback&lt;/a> and an inconsistent experience.&lt;/p>
&lt;p>The larger the organization (ie Enterprise with 10’s-100’s of teams and applications) the worse the problem gets.&lt;/p>
&lt;p>GSD is built on the principle of reusability through a pattern called &lt;a href="https://3musketeers.io/">3 Musketeers&lt;/a> (test, build, and deploy your apps from anywhere, the same way). It gives consistency, control, and confidence to development teams.&lt;/p>
&lt;p>Docker is a key part of this pattern, but the use of &lt;code>docker&lt;/code>, &lt;code>docker-compose&lt;/code> and &lt;code>make&lt;/code> together really unlock the powers of consistency, control and confidence in your application build, test and deploy steps. The &lt;a href="https://3musketeers.io/docs/">3musketeers Docs&lt;/a> have some great examples of these patterns.&lt;/p>
&lt;p>Here's what the most simple usage looks like:&lt;/p>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*O8UwDvze7KXEDKLKgqevcw.jpeg" alt="">&lt;/p>
&lt;p>While the pattern itself is simple, the power (and benefit) comes from the widespread usage across your organization. Here’s what usage might look like:&lt;/p>
&lt;ul>
&lt;li>Agree on a standard interface for all pipeline actions (much like API’s have an agreed interface, all pipelines in the org use the same interface, ie `make build`, `make test`, `make deploy`)&lt;/li>
&lt;li>Keep the interface simple (avoid custom pipeline logic, one simple Makefile calls Compose, the container handles all the logic)&lt;/li>
&lt;li>Create docker containers for each pipeline step, make them stateless, reuse them where it makes sense&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*hdKr28atovmEGFkBRaOIXA.jpeg" alt="">&lt;/p>
&lt;p>&lt;strong>Wins:&lt;/strong> Modern pipelines already support running steps in docker containers. This pattern extends portability across almost any pipeline tool or development workstation and runs the same way in every single environment. Pipeline steps can be tested independently and reused. This pattern makes it easy to go one step further and generate pipelines on-demand based on boilerplate starter templates. Oh yeah, and &lt;a href="https://www.linkedin.com/feed/hashtag/?keywords=fastfeedback&amp;amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6835918781475246080">#fastfeedback&lt;/a> (we’re talking pre-commit).&lt;/p>
&lt;div class="notices info">
&lt;div class="label">Info&lt;/div>
&lt;p>Also posted on medium as &lt;a href="https://medium.com/@drew.khoury/3-musketeers-for-an-epic-developer-experience-8676ddaf33b2">3 Musketeers for an epic Developer Experience&lt;/a>.&lt;/p>
&lt;/div>
&lt;p>_&lt;/p></description></item><item><title>How Cloud Transformation at Scale can enable Good Software Delivery</title><link>https://www.drewkhoury.com/post/gsd/how-cloud-transformation-at-scale-can-enable-good-software-delivery-4a6645d4c570/</link><pubDate>Wed, 04 Aug 2021 22:50:33 +0000</pubDate><guid>https://www.drewkhoury.com/post/gsd/how-cloud-transformation-at-scale-can-enable-good-software-delivery-4a6645d4c570/</guid><description>
&lt;p>&lt;strong>Why should you transform?&lt;/strong>&lt;/p>
&lt;p>Each person, team and organization is going to be on their own journey to cloud, writing good software and attempting to delight customers, or increase profitability. Finding your why can take some time and deep thinking (and deserves a whole blog to itself).&lt;/p>
&lt;p>For now here are some common why’s for transformation and good software delivery that might also apply to you:&lt;/p>
&lt;ul>
&lt;li>To enable product (development) teams to ship software with less dependencies on other teams/humans&lt;/li>
&lt;li>To speed up delivery&lt;/li>
&lt;li>Allow the business to scale products quickly&lt;/li>
&lt;li>To build new products quickly&lt;/li>
&lt;li>To support the business in getting fast feedback through frequent delivery&lt;/li>
&lt;li>To achieve consistency in infrastructure and software deployment, so we can reduce the risk of issues due to manual changes&lt;/li>
&lt;li>To reduce the manual but repeatable steps close to production (security and compliance checks) that often slow down or delay releases&lt;/li>
&lt;/ul>
&lt;h3 id="a-picture">A picture&lt;/h3>
&lt;p>If a picture tells a thousands words, then I present to you Cloud Transformation at Scale:&lt;/p>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*obz2kdYqD143JskvbI63qA@2x.jpeg" alt="">&lt;/p>
&lt;h3 id="cloud-landingzone">Cloud Landing Zone&lt;/h3>
&lt;p>&lt;strong>In purple&lt;/strong> we have the “Cloud Landing Zone” which is the starting point for key cross-cutting concerns that span the entire organization:&lt;/p>
&lt;ul>
&lt;li>Automated Account-Provisioning for shared Cloud Accounts&lt;/li>
&lt;li>Account Guardrails&lt;/li>
&lt;li>Security &amp;amp; Logging Accounts (SIEM &amp;amp; IAM)&lt;/li>
&lt;li>Networking Foundations&lt;/li>
&lt;li>Shared-Services Account&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*EJiHVj3rI6G7yBcJ2ciaTg.png" alt="">&lt;/p>
&lt;p>This is the foundation of most modernization efforts that depend on the Cloud. Automation of Accounts &amp;amp; Infrastructure unlocks the ability to “move fast” in a way that traditional on-prem data center or operation teams aren’t able to match.&lt;/p>
&lt;p>Most organization on their cloud journey are building or buying some variation of this or started off with some manual steps and a few scripts, and are maturing their operations to look at lot like this as they scale.&lt;/p>
&lt;h3 id="services-for-developers">Services for Developers&lt;/h3>
&lt;p>&lt;strong>In red&lt;/strong> we have the next set of shared services focused on supporting product (and thus development) teams. This includes:&lt;/p>
&lt;ul>
&lt;li>Automated Infrastructure-Provisioning for Shared Services (think shared k8s clusters)&lt;/li>
&lt;li>Common Shared Services (build agents, artifact storage etc)&lt;/li>
&lt;li>&lt;strong>Self-Service&lt;/strong> Cloud Accounts for Product teams (self-service being the key)&lt;/li>
&lt;/ul>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*Hihqnj23GgtE4K7FVNynRA.png" alt="">&lt;/p>
&lt;p>It’s important that developers can manage their own accounts via a self-service mechanism (if you’re an organization with more than 10 developers). This means automated pipelines for infrastructure and account provisioning that have a well thought out developer-experience that make it easy for them to manage their own accounts, securely (ie with Account Guardrails built into the pipelines and Cloud Accounts), and sans human intervention.&lt;/p>
&lt;h3 id="product-teamstrust-andverify">Product Teams — Trust and Verify&lt;/h3>
&lt;p>&lt;strong>In blue&lt;/strong> we have application and app-related infrastructure pipeline(s). Each commit should result in a single artifact built and tested then promoted into production if it passes the automated tests.&lt;/p>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*EqfvF7VaSp6iHE-MT4FeMw.png" alt="">&lt;/p>
&lt;p>Developers should have access to reference pipelines that show exactly how to pass all the organizational, security and compliance requirements (which should all be automated within the pipeline). It should be easy to start a new project that can quickly pass through the pipeline into production.&lt;/p>
&lt;p>Developers should have the freedom (&lt;strong>and trust&lt;/strong>) to do whatever they need to do before they reach production. They should have access to every automated security and compliance check that will be run in production so they can quickly assess how ready they are for production &lt;strong>on the very first commit&lt;/strong>.&lt;/p>
&lt;p>The organization should automatically verify every production deployment with the same rules they supplied the developers on day-one, commit-one. No surprises, no extra work to do on production-day.&lt;/p>
&lt;p>This seems like a simple concept, and the name I give it is “&lt;strong>Good Software Delivery&lt;/strong>” because it’s simply how we all should be delivering the software we want to ship.&lt;/p>
&lt;p>&lt;strong>So how does one transform?&lt;/strong> In practice it’s a journey that individuals, teams and organizations need to be prepared to go down. And that’s a completely different rabbit hole I welcome you to explore: &lt;a href="https://faun.pub/one-devops-please-part-1-df7a2787fde8">https://faun.pub/one-devops-please-part-1-df7a2787fde8&lt;/a>&lt;/p>
&lt;p>&lt;strong>Appendix&lt;/strong>&lt;/p>
&lt;p>We could go deeper into each area, but here’s a quick teaser that goes into more detail, in particular for the blue Product Team’s Pipeline(s):&lt;/p>
&lt;p>&lt;img src="https://cdn-images-1.medium.com/max/800/1*v4L4-9CU-9yLSsTZ8Dm1eA@2x.jpeg" alt="">&lt;/p>
&lt;div class="notices info">
&lt;div class="label">Info&lt;/div>
&lt;p>Also posted on medium as &lt;a href="https://medium.com/@drew.khoury/how-cloud-transformation-at-scale-can-enable-good-software-delivery-4a6645d4c570">How Cloud Transformation at Scale can enable Good Software Delivery&lt;/a>.&lt;/p>
&lt;/div></description></item></channel></rss>