<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (jm)</title>
    <link>https://pinboard.in/u:jm/public/</link>
    <description>recent bookmarks from jm</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="https://blog.cloudflare.com/18-november-2025-outage/"/>
	<rdf:li rdf:resource="https://fly.io/blog/stuff-your-pi-hole-from-anywhere/"/>
	<rdf:li rdf:resource="https://status.cloud.google.com/incidents/6PM5mNd43NbMqjCZ5REh"/>
	<rdf:li rdf:resource="https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/"/>
	<rdf:li rdf:resource="https://azure.microsoft.com/en-gb/blog/advancing-safe-deployment-practices/"/>
	<rdf:li rdf:resource="https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/"/>
	<rdf:li rdf:resource="https://nixery.appspot.com/"/>
	<rdf:li rdf:resource="https://serverless.pub/lambda-utility-layers/"/>
	<rdf:li rdf:resource="https://docs.opsmop.io/"/>
	<rdf:li rdf:resource="http://www.doxsey.net/blog/kubernetes--the-surprisingly-affordable-platform-for-personal-projects"/>
	<rdf:li rdf:resource="https://l0rd.github.io/containerspatterns/#1"/>
	<rdf:li rdf:resource="https://www.cs.columbia.edu/~smb/blog/2017-12/2017-12-30.html"/>
	<rdf:li rdf:resource="https://www.theregister.co.uk/2017/11/06/coreos_kubernetes_v_world/"/>
	<rdf:li rdf:resource="https://medium.com/netflix-techblog/developer-experience-lessons-operating-a-serverless-like-platform-at-netflix-a8bbd5b899a0"/>
	<rdf:li rdf:resource="http://pushtrain.club/"/>
	<rdf:li rdf:resource="https://abe-winter.github.io/blues/2017/04/27/config-vs-containers.html"/>
	<rdf:li rdf:resource="http://jvns.ca/blog/2016/11/16/ideas-about-how-to-use-aws/"/>
	<rdf:li rdf:resource="https://www.percona.com/blog/2016/02/11/measuring-docker-io-overhead/"/>
	<rdf:li rdf:resource="https://twitter.com/r39132/status/781655649268731905"/>
	<rdf:li rdf:resource="http://fbrnc.net/blog/2016/05/green-blue-deployments-with-aws-lambda-and-cloudformation"/>
	<rdf:li rdf:resource="https://about.gitlab.com/2016/05/23/gitlab-container-registry/"/>
	<rdf:li rdf:resource="https://jenkins.io/2.0/#pipelines"/>
	<rdf:li rdf:resource="http://labs.unacast.com/2016/01/27/three-lessons-from-running-k8s-in-production/"/>
	<rdf:li rdf:resource="https://medium.com/@AdamRNeary/a-gulp-workflow-for-amazon-lambda-61c2afd723b6#.nbn3nuamp"/>
	<rdf:li rdf:resource="http://queue.acm.org/detail.cfm?ref=rss&amp;id=2839461"/>
	<rdf:li rdf:resource="https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc"/>
	<rdf:li rdf:resource="http://www.eightypercent.net/post/layers-in-the-stack.html"/>
	<rdf:li rdf:resource="http://sirupsen.com/production-docker/"/>
	<rdf:li rdf:resource="https://www.facebook.com/notes/kent-beck/taming-complexity-with-reversibility/1000330413333156"/>
	<rdf:li rdf:resource="https://blog.newrelic.com/2015/06/18/zero-to-docker/"/>
	<rdf:li rdf:resource="http://www.slideshare.net/Docker/docker-at-shopify-from-thislooksfun-to-production-by-simon-eskildsen-shopify"/>
	<rdf:li rdf:resource="http://googlecloudplatform.blogspot.ie/2015/06/Container-Engine-Container-Registry-Updates-New-Features-Pricing.html"/>
	<rdf:li rdf:resource="https://medium.com/fabric8-io/kubernetes-for-developers-2a9c7202fcd3"/>
	<rdf:li rdf:resource="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html"/>
	<rdf:li rdf:resource="https://medium.com/s-c-a-l-e/google-systems-guru-explains-why-containers-are-the-future-of-computing-87922af2cf95"/>
	<rdf:li rdf:resource="https://docs.docker.com/registry/deploying/#understand-production-deployment"/>
	<rdf:li rdf:resource="http://www.slideshare.net/nathariel/patterns-for-building-resilient-and-scalable-microservices-platform-onaws-full"/>
	<rdf:li rdf:resource="https://hashicorp.com/blog/vault.html"/>
	<rdf:li rdf:resource="http://www.hokstad.com/docker/patterns"/>
	<rdf:li rdf:resource="http://www.slideshare.net/mikebrittain/full-stackengmeetupreleasemanagementmikebrittain"/>
	<rdf:li rdf:resource="http://www.slideshare.net/nathariel/microservices-and-elastic-resource-pools-with-amazon-ec2-container-service"/>
	<rdf:li rdf:resource="http://research.google.com/pubs/pub43438.html"/>
	<rdf:li rdf:resource="https://corner.squareup.com/2015/04/keywhiz.html"/>
	<rdf:li rdf:resource="http://sandervanderburg.blogspot.ie/2014/07/managing-private-nix-packages-outside.html"/>
	<rdf:li rdf:resource="http://concourse.ci/"/>
	<rdf:li rdf:resource="http://blog.matthewskelton.net/2015/03/06/hp-is-trying-to-patent-continuous-delivery-here-is-how-you-can-help-block-this-madness/"/>
	<rdf:li rdf:resource="http://blogs.aws.amazon.com/application-management/post/Tx33XKAKURCCW83/Automatically-Deploy-from-GitHub-Using-AWS-CodeDeploy"/>
	<rdf:li rdf:resource="http://azure.microsoft.com/blog/2014/12/17/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/"/>
	<rdf:li rdf:resource="https://wiki.gnome.org/Projects/OSTree"/>
	<rdf:li rdf:resource="http://www.shopify.com/technology/15934308-docker-at-shopify-how-we-built-containers-that-power-over-100-000-online-shops"/>
	<rdf:li rdf:resource="http://azure.microsoft.com/blog/2014/11/19/update-on-azure-storage-service-interruption/"/>
	<rdf:li rdf:resource="http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath/219801#219801"/>
	<rdf:li rdf:resource="https://t37.net/is-docker-ready-for-production-feedbacks-of-a-2-weeks-hands-on.html"/>
	<rdf:li rdf:resource="http://techblog.netflix.com/2013/11/preparing-netflix-api-for-deployment.html"/>
	<rdf:li rdf:resource="http://forty9ten.com/post/64676776664/avoiding-chef-suck-with-auto-scaling-groups"/>
	<rdf:li rdf:resource="https://rclayton.silvrback.com/failing-at-microservices"/>
	<rdf:li rdf:resource="http://www.meetup.com/DevOps-Ireland/events/190786232/"/>
	<rdf:li rdf:resource="http://blog.cloudbees.com/2012/09/continuous-deployment-for-mobile-apps.html"/>
	<rdf:li rdf:resource="http://www.brunton-spall.co.uk/post/2014/05/06/database-migrations-done-right/"/>
	<rdf:li rdf:resource="http://peter.bourgon.org/go-in-production/"/>
	<rdf:li rdf:resource="http://www.meetup.com/London-Continuous-Delivery/events/100034862/"/>
	<rdf:li rdf:resource="http://literateprogrammer.blogspot.co.uk/2014/03/the-microservice-declaration-of.html"/>
	<rdf:li rdf:resource="https://github.com/oleiade/trousseau"/>
	<rdf:li rdf:resource="https://github.com/baudehlo/deploy_to_runit"/>
	<rdf:li rdf:resource="http://rc3.org/2013/03/03/dont-get-stuck/"/>
	<rdf:li rdf:resource="http://engineering.thetrainline.com/2013/12/02/moving-to-multiple-deployments-per-week-at-thetrainline-com/"/>
	<rdf:li rdf:resource="https://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/"/>
	<rdf:li rdf:resource="http://pl.atyp.us/2013-11-shared-libraries.html"/>
	<rdf:li rdf:resource="http://www.feld.com/wp/archives/2013/07/why-every-company-needs-a-devops-team-now.html"/>
	<rdf:li rdf:resource="http://mesosphere.io/2013/09/26/docker-on-mesos/"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="https://blog.cloudflare.com/18-november-2025-outage/">
    <title>Cloudflare outage on November 18, 2025</title>
    <dc:date>2025-11-19T10:37:18+00:00</dc:date>
    <link>https://blog.cloudflare.com/18-november-2025-outage/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[tl;dr: a configuration-generation tool had buggy error handling code. Triggered by a permissions change, it generated over-large configs which then caused a crash in buggy config-reading code in their Bot Management module.  This configuration was rolled out globally within minutes.

As @kiall in ITC Slack notes: "the one thing I'd be pushing on after an outage like this (config mistake, propagated globally..) is "treat config like any other deployment - with a slow and steady rollout" -- and this is not called out in the postmortem.  I agree this is a significant oversight.....

Quoting HN:

> classic @devops_borat. "To make error is human. To propagate error to all server in automatic way is #devops"]]></description>
<dc:subject>postmortem cloudflare outages configuration deployment cloud error-handling rollouts via:itc</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ed67da858e59/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postmortem"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloudflare"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:configuration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloud"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:error-handling"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rollouts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:itc"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://fly.io/blog/stuff-your-pi-hole-from-anywhere/">
    <title>Fly.io demo using Pi-Hole</title>
    <dc:date>2021-11-25T10:48:23+00:00</dc:date>
    <link>https://fly.io/blog/stuff-your-pi-hole-from-anywhere/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[this is impressively easy -- just a simple Dockerfile and a fly.toml config file. Fly.io seems like a nice way to get worldwide lightweight container deploys easily]]></description>
<dc:subject>fly.io ops deployment cdn docker containers</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:cdcabf745817/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fly.io"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cdn"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://status.cloud.google.com/incidents/6PM5mNd43NbMqjCZ5REh">
    <title>Google Cloud incident was caused by a race condition which triggered 30 minutes before the bugfix deployment was due to complete</title>
    <dc:date>2021-11-23T09:58:27+00:00</dc:date>
    <link>https://status.cloud.google.com/incidents/6PM5mNd43NbMqjCZ5REh</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Wow, this was tragic!

"A Google engineer discovered this bug on 12 November, which caused us to declare an internal high-priority incident because of the latent risk to production systems. After analyzing the bug, we froze a part of our configuration system to make the likelihood of the race condition even lower. Since the race condition had existed in the fleet for several months already, the team believed that this extra step made the risk even lower. Thus the team believed the lowest-risk path [...] was to roll out fixes in a controlled manner as opposed to a same-day emergency patch. [...]

Gradual rollouts of both patches started on Monday, 15 November, and patch B completed rollout by that evening. On Tuesday, 16 November, as the patch A rollout was within 30 minutes of completing, the race condition did manifest in an unpatched cluster, and the outage started."]]></description>
<dc:subject>cloud outages tragic google race-conditions gclb patching deployment ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e167312e4892/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloud"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tragic"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:race-conditions"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gclb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:patching"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/">
    <title>Automating safe, hands-off deployments</title>
    <dc:date>2020-06-23T22:53:17+00:00</dc:date>
    <link>https://aws.amazon.com/builders-library/automating-safe-hands-off-deployments/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Great doc from Clare Liguori about current AWS best practices around deployment. A fair bit of it is similar to what they were doing by the time I left; this "wave" concept is a good new approach though:

<blockquote>Each team needs to balance the safety of small-scoped deployments with the speed at which we can deliver changes to customers in all Regions. Deploying changes to 24 Regions or 76 Availability Zones through the pipeline one at a time has the lowest risk of causing broad impact, but it could take weeks for the pipeline to deliver a change to customers globally. We have found that grouping deployments into “waves” of increasing size, as seen in the previous sample prod pipeline, helps us achieve a good balance between deployment risk and speed. Each wave’s stage in the pipeline orchestrates deployments to a group of Regions, with changes being promoted from wave to wave. New changes can enter the production phase of the pipeline at any time. After a set of changes is promoted from the first step to the second step in wave 1, the next set of changes from gamma is promoted into the first step of wave 1, so we don’t end up with large bundles of changes waiting to be deployed to production.

The first two waves in the pipeline build the most confidence in the change: The first wave deploys to a Region with a low number of requests to limit the possible impact of the first production deployment of the new change. The wave deploys to only one Availability Zone (or cell) at a time within that Region to cautiously deploy the change across the Region. The second wave then deploys to one Availability Zone (or cell) at a time in a Region with a high number of requests where it is highly likely that customers will exercise all the new code paths and where we get good validation of the changes.

After we have higher confidence in the safety of the change from the initial pipeline waves’ deployments, we can deploy to more and more Regions in parallel in the same wave. For example, the previous sample prod pipeline deploys to three Regions in wave 3, then to up to 12 Regions in wave 4, then to the remaining Regions in wave 5. The exact number and choice of Regions in each of these waves and the number of waves in a service team’s pipeline depend on the individual service’s usage patterns and scale. The later waves in the pipeline still help us achieve our objective to prevent negative impact to multiple Availability Zones in the same Region. When a wave deploys to multiple Regions in parallel, it follows the same cautious rollout behavior for each Region that was used in the initial waves. Each step in the wave only deploys to a single Availability Zone or cell from each Region in the wave.</blockquote>

]]></description>
<dc:subject>automation ops devops amazon aws deployment waves az multi-region ci cd</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7ecaa0ea15ea/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:automation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:amazon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:waves"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:az"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:multi-region"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://azure.microsoft.com/en-gb/blog/advancing-safe-deployment-practices/">
    <title>Advancing safe deployment practices in Azure</title>
    <dc:date>2020-02-05T21:17:42+00:00</dc:date>
    <link>https://azure.microsoft.com/en-gb/blog/advancing-safe-deployment-practices/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[MS describe their Azure rollout strategy -- canary regions -> pilot phase with hardware diversity -> early regions, building up to larger regions -> full deployment.]]></description>
<dc:subject>deployment azure microsoft rollout ops safety outages</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:006afc2918bd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:azure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microsoft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rollout"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:safety"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/">
    <title>Details of the Cloudflare outage on July 2, 2019</title>
    <dc:date>2019-07-15T12:18:36+00:00</dc:date>
    <link>https://blog.cloudflare.com/details-of-the-cloudflare-outage-on-july-2-2019/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Great writeup from jgc.  Worth noting some important lessons:

* config changes should be rolled out carefully and gradually, just like code;

* particularly regexps, which are effectively code anyway;

* emergency-use rollback systems need to work, of course!;

* having emergency-only systems is a risk, too, since infrequently-used code paths are likely to atrophy and break without anyone noticing (as nsheridan said);

* /.*/ in a regexp is pretty much always bad news, and would have been worth a linter to catch before commit.]]></description>
<dc:subject>cloudflare outages regex postmortems regexps deployment rollback via:jgc</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:1ddbe47b29c6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloudflare"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:regex"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postmortems"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:regexps"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rollback"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:jgc"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://nixery.appspot.com/">
    <title>Nixery</title>
    <dc:date>2019-05-24T10:47:21+00:00</dc:date>
    <link>https://nixery.appspot.com/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>Nixery provides the ability to pull ad-hoc container images from a Docker-compatible registry server. The image names specify the contents the image should contain, which are then retrieved and built by the Nix package manager. Nix is also responsible for the creation of the container images themselves.</blockquote>

e.g. "docker run -ti nixery.appspot.com/shell/htop bash"

]]></description>
<dc:subject>docker containers nix nixpkgs packaging deployment ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:415edb4724cb/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:nix"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:nixpkgs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://serverless.pub/lambda-utility-layers/">
    <title>FFmpeg, SOX, Pandoc and RSVG for AWS Lambda</title>
    <dc:date>2019-01-08T16:34:24+00:00</dc:date>
    <link>https://serverless.pub/lambda-utility-layers/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[OK-ish way to add dependencies to your Lambda containers:

<blockquote>The basic AWS Lambda container is quite constrained, and until recently it was relatively difficult to include additional binaries into Lambda functions. Lambda Layers make that easy.  A Layer is a common piece of code that is attached to your Lambda runtime in the /opt directory. You can reuse it in many functions, and deploy it only once. Individual functions do not need to include the layer code in their deployment packages, which means that the resulting functions are smaller and deploy faster. For example, at MindMup, we use Pandoc to convert markdown files into Word documents. The actual lambda function code is only a few dozen lines of JavaScript, but before layers, each deployment of the function had to include the whole Pandoc binary, larger than 100 MB. With a layer, we can publish Pandoc only once, so we use significantly less overall space for Lambda function versions. Each code change now requires just a quick redeployment.</blockquote>

]]></description>
<dc:subject>serverless lambda dependencies deployment packaging ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:355dc75951ce/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:serverless"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lambda"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://docs.opsmop.io/">
    <title>OpsMop</title>
    <dc:date>2018-11-19T11:56:28+00:00</dc:date>
    <link>https://docs.opsmop.io/</link>
    <dc:creator>jm</dc:creator><description><![CDATA['a next-generation, no-compromise automation system'.

<blockquote>Uses:

Web-scale configuration management of all Linux/Unix systems;
Application deployment;
Immutable systems build definition;
Maintaining stateful services such as database and messaging platforms;
Automating one-off tasks & processes;
Deployment and management of the undercloud.

Features:

Python 3 DSL;
Declarative resource model with imperative capabilities;
Type / Provider plugin seperation;
Implicit ordering (with handler notification);
Formalized “Plan” vs “Apply” evaluation stages;
Early validation prior to runtime;
Programatically scoped variables;
Strong object-orientation</blockquote>

]]></description>
<dc:subject>opsmop ops configuration-management deployment build</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2f28aa217ebe/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:opsmop"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:configuration-management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.doxsey.net/blog/kubernetes--the-surprisingly-affordable-platform-for-personal-projects">
    <title>Kubernetes: The Surprisingly Affordable Platform for Personal Projects</title>
    <dc:date>2018-10-03T10:57:19+00:00</dc:date>
    <link>http://www.doxsey.net/blog/kubernetes--the-surprisingly-affordable-platform-for-personal-projects</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>At the beginning of the year I spent several months deep diving on Kubernetes for a project at work. As an all-inclusive, batteries-included technology for infrastructure management, Kubernetes solves many of the problems you're bound to run into at scale. However popular wisdom would suggest that Kubernetes is an overly complex piece of technology only really suitable for very large clusters of machines; that it carries a large operational burden and that therefore using it for anything less than dozens of machines is overkill.

I think that's probably wrong. Kubernetes makes sense for small projects and you can have your own Kubernetes cluster today for as little as $5 a month.</blockquote>

(via Tony Finch)]]></description>
<dc:subject>via:fanf deployment howto kubernetes ops projects hacks clustering</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:fa2e19a6200f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:fanf"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:howto"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kubernetes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:projects"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hacks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:clustering"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://l0rd.github.io/containerspatterns/#1">
    <title>Containers Patterns</title>
    <dc:date>2018-02-19T11:01:41+00:00</dc:date>
    <link>https://l0rd.github.io/containerspatterns/#1</link>
    <dc:creator>jm</dc:creator><description><![CDATA["There are a thousand ways to use containers" -- broken down into Development, Distribution and Runtime Patterns  (via Tony Finch)]]></description>
<dc:subject>docker containers design-patterns coding packaging deployment via:fanf</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:0e99583f73a7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:design-patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:fanf"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.cs.columbia.edu/~smb/blog/2017-12/2017-12-30.html">
    <title>Steven Bellovin on Bitcoin</title>
    <dc:date>2018-01-01T23:45:31+00:00</dc:date>
    <link>https://www.cs.columbia.edu/~smb/blog/2017-12/2017-12-30.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>When you engineer a system for deployment you build it to meet certain real-world goals. You may find that there are tradeoffs, and that you can't achieve all of your goals, but that's normal; as I've remarked, "engineering is the art of picking the right trade-off in an overconstrained environment". For any computer-based financial system, one crucial parameter is the transaction rate. For a system like Bitcoin, another goal had to be avoiding concentrations of power. And of course, there's transaction privacy.

There are less obvious factors, too. These days, "mining" for Bitcoins requires a lot of computations, which translates directly into electrical power consumption. One estimate is that the Bitcoin network uses up more electricity than many countries. There's also the question of governance: who makes decisions about how the network should operate? It's not a question that naturally occurs to most scientists and engineers, but production systems need some path for change.

In all of these, Bitcoin has failed. The failures weren't inevitable; there are solutions to these problems in the acdemic literature. But Bitcoin was deployed by enthusiasts who in essence let experimental code escape from a lab to the world, without thinking about the engineering issues—and now they're stuck with it. Perhaps another, better cryptocurrency can displace it, but it's always much harder to displace something that exists than to fill a vacuum.</blockquote>

]]></description>
<dc:subject>steven-bellovin bitcoin tech software systems engineering deployment cryptocurrency cypherpunks</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:4f78659ed032/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:steven-bellovin"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:bitcoin"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tech"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:systems"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cryptocurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cypherpunks"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.theregister.co.uk/2017/11/06/coreos_kubernetes_v_world/">
    <title>'Lambda and serverless is one of the worst forms of proprietary lock-in we've ever seen in the history of humanity' • The Register</title>
    <dc:date>2017-11-07T10:25:09+00:00</dc:date>
    <link>https://www.theregister.co.uk/2017/11/06/coreos_kubernetes_v_world/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>That doesn't mean Polvi is a fan. "Lambda and serverless is one of the worst forms of proprietary lock-in that we've ever seen in the history of humanity," said Polvi, only partly in jest, referring to the most widely used serverless offering, AWS Lambda. "It's seriously as bad as it gets."

He elaborated: "It's code that tied not just to hardware – which we've seen before – but to a data center, you can't even get the hardware yourself. And that hardware is now custom fabbed for the cloud providers with dark fiber that runs all around the world, just for them. So literally the application you write will never get the performance or responsiveness or the ability to be ported somewhere else without having the deployment footprint of Amazon."</blockquote>

Absolutely agreed...]]></description>
<dc:subject>lambda amazon aws containers coreos deployment lockin proprietary serverless alex-polvi kubernetes</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8417fb02298a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lambda"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:amazon"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coreos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lockin"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:proprietary"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:serverless"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:alex-polvi"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kubernetes"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/netflix-techblog/developer-experience-lessons-operating-a-serverless-like-platform-at-netflix-a8bbd5b899a0">
    <title>Developer Experience Lessons Operating a Serverless-like Platform at Netflix</title>
    <dc:date>2017-07-17T10:48:03+00:00</dc:date>
    <link>https://medium.com/netflix-techblog/developer-experience-lessons-operating-a-serverless-like-platform-at-netflix-a8bbd5b899a0</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Very interesting writeup on how Netflix are finding operating a serverless scripting system; they offer scriptability in their backend and it's used heavily by devs to provide features.  Lots of having to reinvent the wheel on packaging, deployment, versioning, and test/staging infrastructure]]></description>
<dc:subject>serverless dependencies packaging deployment versioning devex netflix developer-experience dev testing staging scripting</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:a6089d93b40f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:serverless"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:versioning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devex"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:netflix"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:developer-experience"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dev"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:staging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:scripting"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://pushtrain.club/">
    <title>The Push Train</title>
    <dc:date>2017-05-10T11:06:53+00:00</dc:date>
    <link>http://pushtrain.club/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Excellent preso from Dan McKinley on the Etsy-based continuous delivery model, and what he learned trying to apply it after Etsy:

<blockquote>It’s notable that almost all of the hard things we dealt with were social problems. Some of these solutions involved writing code, but the hard part was the human organization.  The hard parts in were maintaining a sense of community ownership over the state of the whole system.</blockquote>

]]></description>
<dc:subject>etsy ci cd deployment devops deploys dan-mckinley mcfunley presentations</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:023c5d8b0b45/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:etsy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deploys"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dan-mckinley"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mcfunley"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:presentations"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://abe-winter.github.io/blues/2017/04/27/config-vs-containers.html">
    <title>Instead of containerization, give me strong config &amp; deployment primitives</title>
    <dc:date>2017-04-28T12:42:17+00:00</dc:date>
    <link>https://abe-winter.github.io/blues/2017/04/27/config-vs-containers.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Reasonable list of things Docker does badly at the moment, and a call to fix them.  I still think Docker/rkt are a solid approach, if not 100% there yet though]]></description>
<dc:subject>docker containers complaining whinge networking swarm deployment architecture build packaging</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:d1e61e83e357/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:complaining"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:whinge"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:swarm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://jvns.ca/blog/2016/11/16/ideas-about-how-to-use-aws/">
    <title>Julia Evans reverse engineers Skyliner.io</title>
    <dc:date>2016-11-17T12:34:18+00:00</dc:date>
    <link>http://jvns.ca/blog/2016/11/16/ideas-about-how-to-use-aws/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[simple usage of Docker, blue/green deploys, and AWS ALBs]]></description>
<dc:subject>docker alb aws ec2 blue-green-deploys deployment ops tools skyliner via:jgilbert</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f2861c3cf680/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:alb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:blue-green-deploys"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tools"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:skyliner"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:jgilbert"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.percona.com/blog/2016/02/11/measuring-docker-io-overhead/">
    <title>Measuring Docker IO overhead - Percona Database Performance Blog</title>
    <dc:date>2016-11-01T11:59:27+00:00</dc:date>
    <link>https://www.percona.com/blog/2016/02/11/measuring-docker-io-overhead/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[See also https://www.percona.com/blog/2016/02/05/measuring-docker-cpu-network-overhead/ for the CPU/Network equivalent.  The good news is that nowadays it's virtually 0 when the correct settings are used]]></description>
<dc:subject>docker percona overhead mysql deployment performance ops containers</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c324d2498cee/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:percona"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:overhead"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mysql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twitter.com/r39132/status/781655649268731905">
    <title>Airflow/AMI/ASG nightly-packaging workflow</title>
    <dc:date>2016-09-30T09:10:36+00:00</dc:date>
    <link>https://twitter.com/r39132/status/781655649268731905</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Some tantalising discussion on twitter of an Airflow + AMI + ASG workflow for ML packaging:

'We build models using Airflow. We deploy new models as AMIs where each AMI is model + scoring code. The AMI is hence a version of code + model at a point in time : #immutable_infrastructure.  It's natural for Airflow to build & deploy the model+code with each Airflow DAG Run corresponding to a versioned AMI.  if there's a problem, we can simply roll back to the previous AMI & identify the problematic model building Dag run. Since we use ASGs, Airflow can execute a rolling deploy of new AMIs. We could also have it do a validation & ASG rollback of the AMI if validation fails. Airflow is being used for reliable Model build+validation+deployment.']]></description>
<dc:subject>ml packaging airflow asg ami deployment ops infrastructure rollback</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:d38d7335c227/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ml"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:airflow"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:asg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ami"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infrastructure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rollback"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://fbrnc.net/blog/2016/05/green-blue-deployments-with-aws-lambda-and-cloudformation">
    <title>Green/Blue Deployments with AWS Lambda and CloudFormation - done right</title>
    <dc:date>2016-05-30T08:56:17+00:00</dc:date>
    <link>http://fbrnc.net/blog/2016/05/green-blue-deployments-with-aws-lambda-and-cloudformation</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Basically, use a Lambda to put all instances from an ASG into the ELB, then remove the old ASG]]></description>
<dc:subject>asg elb aws lambda deployment ops blue-green-deploys</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b11b95720b3a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:asg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:elb"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lambda"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:blue-green-deploys"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://about.gitlab.com/2016/05/23/gitlab-container-registry/">
    <title>GitLab Container Registry</title>
    <dc:date>2016-05-24T07:17:17+00:00</dc:date>
    <link>https://about.gitlab.com/2016/05/23/gitlab-container-registry/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[GitLab continue to out-innovate Github, which is just wanking around with breaking the UI these days]]></description>
<dc:subject>gitlab github git ci cd containers docker deployment coding</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:5378add3a162/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gitlab"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:github"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:git"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://jenkins.io/2.0/#pipelines">
    <title>Jenkins 2.0</title>
    <dc:date>2016-03-27T10:20:43+00:00</dc:date>
    <link>https://jenkins.io/2.0/#pipelines</link>
    <dc:creator>jm</dc:creator><description><![CDATA[built-in support for CI/CD deployment pipelines, driven from a checked-in DSL file. great stuff, very glad to see them going this direction. (via Eric)]]></description>
<dc:subject>via:eric jenkins ci cd deployment pipelines testing automation build</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:435381483deb/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:eric"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jenkins"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pipelines"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:automation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://labs.unacast.com/2016/01/27/three-lessons-from-running-k8s-in-production/">
    <title>Three lessons from running Kubernetes in production</title>
    <dc:date>2016-01-29T14:12:23+00:00</dc:date>
    <link>http://labs.unacast.com/2016/01/27/three-lessons-from-running-k8s-in-production/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Wow, the deployment thing is pretty hacky
]]></description>
<dc:subject>deployment ops kubernetes production</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e8d8083dd7ab/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kubernetes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/@AdamRNeary/a-gulp-workflow-for-amazon-lambda-61c2afd723b6#.nbn3nuamp">
    <title>A Gulp Workflow for Amazon Lambda</title>
    <dc:date>2015-12-07T12:04:50+00:00</dc:date>
    <link>https://medium.com/@AdamRNeary/a-gulp-workflow-for-amazon-lambda-61c2afd723b6#.nbn3nuamp</link>
    <dc:creator>jm</dc:creator><description><![CDATA['any nontrivial development of Lambda functions will require a simple, automated build/deploy process that also fills a couple of Lambda’s gaps such as the use of node modules and environment variables.'

See also https://medium.com/@AdamRNeary/developing-and-testing-amazon-lambda-functions-e590fac85df4#.mz0a4qk3j : 'I am psyched about Amazon’s new Lambda service for asynchronous task processing, but the ideal development and testing cycle is really left to the engineer. While Amazon provides a web-based console, I prefer an approach that uses Mocha. Below you will find the gritty details using Kinesis events as a sample input.'

]]></description>
<dc:subject>lambda aws services testing deployment ops mocha gulp javascript</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:04a4a810e7fd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lambda"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:services"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mocha"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gulp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:javascript"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://queue.acm.org/detail.cfm?ref=rss&amp;id=2839461">
    <title>How Facebook avoids failures</title>
    <dc:date>2015-11-02T16:30:59+00:00</dc:date>
    <link>http://queue.acm.org/detail.cfm?ref=rss&amp;id=2839461</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Great paper from Ben Maurer of Facebook in ACM Queue.

<blockquote>A "move-fast" mentality does not have to be at odds with reliability. To make these philosophies compatible, Facebook's infrastructure provides safety valves.</blockquote>

This is full of interesting techniques.

* Rapidly deployed configuration changes: Make everybody use a common configuration system; Statically validate configuration changes; Run a canary;  Hold on to good configurations; Make it easy to revert.

* Hard dependencies on core services: Cache data from core services. Provide hardened APIs. Run fire drills.

* Increased latency and resource exhaustion: Controlled Delay (based on the anti-bufferbloat CoDel algorithm -- this is really cool); Adaptive LIFO (last-in, first-out) for queue busting; Concurrency Control (essentially a form of circuit breaker).

* Tools that Help Diagnose Failures: High-Density Dashboards with Cubism (horizon charts); What just changed?

* Learning from Failure: the DERP (!) methodology, ]]></description>
<dc:subject>ben-maurer facebook reliability algorithms codel circuit-breakers derp failure ops cubism horizon-charts charts dependencies soa microservices uptime deployment configuration change-management</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f84c5f60c6e9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ben-maurer"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:facebook"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reliability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:algorithms"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:codel"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:circuit-breakers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:derp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:failure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cubism"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:horizon-charts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:charts"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:soa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:uptime"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:configuration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:change-management"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc">
    <title>Outage postmortem (2015-10-08 UTC) : Stripe: Help &amp; Support</title>
    <dc:date>2015-10-10T20:07:25+00:00</dc:date>
    <link>https://support.stripe.com/questions/outage-postmortem-2015-10-08-utc</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>There was a breakdown in communication between the developer who requested the index migration and the database operator who deleted the old index. Instead of working on the migration together, they communicated in an implicit way through flawed tooling. The dashboard that surfaced the migration request was missing important context: the reason for the requested deletion, the dependency on another index’s creation, and the criticality of the index for API traffic. Indeed, the database operator didn’t have a way to check whether the index had recently been used for a query.</blockquote>

Good demo of how the Etsy-style chatops deployment approach would have helped avoid this risk.]]></description>
<dc:subject>stripe postmortem outages databases indexes deployment chatops deploy ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:464d897d2cd9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:stripe"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postmortem"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:databases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:indexes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:chatops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deploy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.eightypercent.net/post/layers-in-the-stack.html">
    <title>Anatomy of a Modern Production Stack</title>
    <dc:date>2015-09-18T16:37:49+00:00</dc:date>
    <link>http://www.eightypercent.net/post/layers-in-the-stack.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Interesting post, but I think it falls into a common trap for the xoogler or ex-Amazonian -- assuming that all the BigCo mod cons are required to operate, when some are luxuries than can be skipped for a few years to get some real products built]]></description>
<dc:subject>architecture ops stack docker containerization deployment containers rkt coreos prod monitoring xooglers</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6929918b25c5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:stack"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containerization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rkt"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coreos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:prod"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:monitoring"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:xooglers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://sirupsen.com/production-docker/">
    <title>Why Docker is Not Yet Succeeding Widely in Production</title>
    <dc:date>2015-07-29T12:52:39+00:00</dc:date>
    <link>http://sirupsen.com/production-docker/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Spot-on points which Docker needs to address. It's still production-ready, and _should_ be used there, it just has significant rough edges...]]></description>
<dc:subject>docker containers devops deployment releases linux ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:f942eafba4ab/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:releases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.facebook.com/notes/kent-beck/taming-complexity-with-reversibility/1000330413333156">
    <title>Taming Complexity with Reversibility</title>
    <dc:date>2015-07-28T19:28:48+00:00</dc:date>
    <link>https://www.facebook.com/notes/kent-beck/taming-complexity-with-reversibility/1000330413333156</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is a great post from Kent Beck, putting a lot of recent deployment/rollout patterns in a clear context -- that of supporting "reversibility":

<blockquote>Development servers. Each engineer has their own copy of the entire site. Engineers can make a change, see the consequences, and reverse the change in seconds without affecting anyone else.
Code review. Engineers can propose a change, get feedback, and improve or abandon it in minutes or hours, all before affecting any people using Facebook.
Internal usage. Engineers can make a change, get feedback from thousands of employees using the change, and roll it back in an hour.
Staged rollout. We can begin deploying a change to a billion people and, if the metrics tank, take it back before problems affect most people using Facebook.
Dynamic configuration. If an engineer has planned for it in the code, we can turn off an offending feature in production in seconds. Alternatively, we can dial features up and down in tiny increments (i.e. only 0.1% of people see the feature) to discover and avoid non-linear effects.
Correlation. Our correlation tools let us easily see the unexpected consequences of features so we know to turn them off even when those consequences aren't obvious.
IRC. We can roll out features potentially affecting our ability to communicate internally via Facebook because we have uncorrelated communication channels like IRC and phones.
Right hand side units. We can add a little bit of functionality to the website and turn it on and off in seconds, all without interfering with people's primary interaction with NewsFeed.
Shadow production. We can experiment with new services under real load, from a tiny trickle to the whole flood, without affecting production.
Frequent pushes. Reversing some changes require a code change. On the website we never more than eight hours from the next schedule code push (minutes if a fix is urgent and you are willing to compensate Release Engineering). The time frame for code reversibility on the mobile applications is longer, but the downward trend is clear from six weeks to four to (currently) two.
Data-informed decisions. (Thanks to Dave Cleal) Data-informed decisions are inherently reversible (with the exceptions noted below). "We expect this feature to affect this metric. If it doesn't, it's gone."
Advance countries. We can roll a feature out to a whole country, generate accurate feedback, and roll it back without affecting most of the people using Facebook.
Soft launches. When we roll out a feature or application with a minimum of fanfare it can be pulled back with a minimum of public attention.
Double write/bulk migrate/double read. Even as fundamental a decision as storage format is reversible if we follow this format: start writing all new data to the new data store, migrate all the old data, then start reading from the new data store in parallel with the old.</blockquote>

We do a bunch of these in work, and the rest are on the to-do list. +1 to these!]]></description>
<dc:subject>software deployment complexity systems facebook reversibility dark-releases releases ops cd migration</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6a3089426e1e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:software"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:complexity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:systems"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:facebook"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reversibility"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dark-releases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:releases"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:migration"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.newrelic.com/2015/06/18/zero-to-docker/">
    <title>From Zero to Docker: Migrating to the Whale</title>
    <dc:date>2015-07-15T10:41:15+00:00</dc:date>
    <link>https://blog.newrelic.com/2015/06/18/zero-to-docker/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[nicely detailed writeup of how New Relic are dockerizing]]></description>
<dc:subject>docker ops deployment packaging new-relic</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6206878c472e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:new-relic"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.slideshare.net/Docker/docker-at-shopify-from-thislooksfun-to-production-by-simon-eskildsen-shopify">
    <title>Docker at Shopify: From This-Looks-Fun to Production</title>
    <dc:date>2015-06-23T13:13:29+00:00</dc:date>
    <link>http://www.slideshare.net/Docker/docker-at-shopify-from-thislooksfun-to-production-by-simon-eskildsen-shopify</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Pragmatic evolution story, adding Docker as a packaging/deploy format for an existing production Capistrano/Rails fleet]]></description>
<dc:subject>docker ops deployment packaging shopify slides</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8a84896037d6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shopify"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:slides"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://googlecloudplatform.blogspot.ie/2015/06/Container-Engine-Container-Registry-Updates-New-Features-Pricing.html">
    <title>Google Cloud Platform announces new Container Registry</title>
    <dc:date>2015-06-23T11:21:50+00:00</dc:date>
    <link>http://googlecloudplatform.blogspot.ie/2015/06/Container-Engine-Container-Registry-Updates-New-Features-Pricing.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Yay. Sensible Docker registry pricing at last.  Given the high prices, rough edges and slow performance of the other registry offerings, I'm quite happy to see this.

<blockquote>Google Container Registry helps make it easy for you to store your container images in a private and encrypted registry, built on Cloud Platform. Pricing for storing images in Container Registry is simple: you only pay Google Cloud Storage costs. Pushing images is free, and pulling Docker images within a Google Cloud Platform region is free (Cloud Storage egress cost when outside of a region). 

 Container Registry is now ready for production use:

* Encrypted and Authenticated - Your container images are encrypted at rest, and access is authenticated using Cloud Platform OAuth and transmitted over SSL
* Fast - Container Registry is fast and can handle the demands of your application, because it is built on Cloud Storage and Cloud Networking. 
* Simple - If you’re using Docker, just tag your image with a gcr.io tag and push it to the registry to get started.  Manage your images in the Google Developers Console.
* Local - If your cluster runs in Asia or Europe, you can now store your images in ASIA or EU specific repositories using asia.gcr.io and eu.gcr.io tags.</blockquote>
]]></description>
<dc:subject>docker registry google gcp containers cloud-storage ops deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:dd814f15bb49/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:registry"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gcp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloud-storage"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/fabric8-io/kubernetes-for-developers-2a9c7202fcd3">
    <title>Kubernetes for developers</title>
    <dc:date>2015-05-24T08:18:52+00:00</dc:date>
    <link>https://medium.com/fabric8-io/kubernetes-for-developers-2a9c7202fcd3</link>
    <dc:creator>jm</dc:creator><description><![CDATA[great intro]]></description>
<dc:subject>kubernetes ops docker containers rocket deployment packaging</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2bae4eb96313/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kubernetes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rocket"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html">
    <title>Deploying Elastic Beanstalk Applications from Docker Containers - Elastic Beanstalk</title>
    <dc:date>2015-05-19T10:19:06+00:00</dc:date>
    <link>http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[oh wow, this actually sounds pretty cool]]></description>
<dc:subject>docker aws ec2 beanstalk deployment ops containers</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:892d57be519a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:beanstalk"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/s-c-a-l-e/google-systems-guru-explains-why-containers-are-the-future-of-computing-87922af2cf95">
    <title>Eric Brewer interview on Kubernetes</title>
    <dc:date>2015-05-18T21:46:37+00:00</dc:date>
    <link>https://medium.com/s-c-a-l-e/google-systems-guru-explains-why-containers-are-the-future-of-computing-87922af2cf95</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>What is the relationship between Kubernetes, Borg and Omega (the two internal resource-orchestration systems Google has built)?

I would say, kind of by definition, there’s no shared code but there are shared people.

You can think of Kubernetes — especially some of the elements around pods and labels — as being lessons learned from Borg and Omega that are, frankly, significantly better in Kubernetes. There are things that are going to end up being the same as Borg — like the way we use IP addresses is very similar — but other things, like labels, are actually much better than what we did internally.

I would say that’s a lesson we learned the hard way.</blockquote>

]]></description>
<dc:subject>google architecture kubernetes docker containers borg omega deployment ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7ab8ae0d6508/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:kubernetes"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:borg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:omega"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://docs.docker.com/registry/deploying/#understand-production-deployment">
    <title>Deploy a registry - Docker Documentation</title>
    <dc:date>2015-05-09T08:22:24+00:00</dc:date>
    <link>https://docs.docker.com/registry/deploying/#understand-production-deployment</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Looks like it's pretty feasible to run a private Docker registry on every host, backed by S3 (according to the ECS team's AMA). SPOF-free -- handy]]></description>
<dc:subject>docker registry ops deployment s3</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:1bdb65947ad0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:registry"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:s3"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.slideshare.net/nathariel/patterns-for-building-resilient-and-scalable-microservices-platform-onaws-full">
    <title>Patterns for building a resilient and scalable microservices platform on AWS</title>
    <dc:date>2015-05-06T14:59:03+00:00</dc:date>
    <link>http://www.slideshare.net/nathariel/patterns-for-building-resilient-and-scalable-microservices-platform-onaws-full</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Some good details from Boyan Dimitrov at Hailo, on their orchestration, deployment, provisioning infra they've built]]></description>
<dc:subject>deployment ops devops hailo microservices platform patterns slides</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:b424fcec24ec/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hailo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:platform"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:slides"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://hashicorp.com/blog/vault.html">
    <title>Vault</title>
    <dc:date>2015-04-28T18:13:52+00:00</dc:date>
    <link>https://hashicorp.com/blog/vault.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[HashiCorp's take on the secrets-storage system.  looks good]]></description>
<dc:subject>hashicorp deployment security secrets authentication vault storage keys key-rotation</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6dc7702df3f8/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hashicorp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:secrets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:authentication"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:vault"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:storage"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:keys"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:key-rotation"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.hokstad.com/docker/patterns">
    <title>Eight Docker Development Patterns</title>
    <dc:date>2015-04-26T21:16:00+00:00</dc:date>
    <link>http://www.hokstad.com/docker/patterns</link>
    <dc:creator>jm</dc:creator><description><![CDATA[good Docker tips]]></description>
<dc:subject>tips docker ops deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8eb79d23e20e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.slideshare.net/mikebrittain/full-stackengmeetupreleasemanagementmikebrittain">
    <title>Etsy's Release Management process</title>
    <dc:date>2015-04-22T10:17:42+00:00</dc:date>
    <link>http://www.slideshare.net/mikebrittain/full-stackengmeetupreleasemanagementmikebrittain</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Good info on how Etsy use their Deployinator tool, end-to-end.

Slide 11: git SHA is visible for each env, allowing easy verification of what code is deployed.

Slide 14: Code is deployed to "princess" staging env while CI tests are running; no need to wait for unit/CI tests to complete.

Slide 23: smoke tests of pre-prod "princess" (complete after 8 mins elapsed).

Slide 31: dashboard link for deployed code is posted during deploy; post-release prod smoke tests are run by Jenkins. (short ones! they complete in 42 seconds)

]]></description>
<dc:subject>deployment etsy deploy deployinator princess staging ops testing devops smoke-tests production jenkins</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7463b5d3bfc9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:etsy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deploy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployinator"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:princess"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:staging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:smoke-tests"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jenkins"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.slideshare.net/nathariel/microservices-and-elastic-resource-pools-with-amazon-ec2-container-service">
    <title>Microservices and elastic resource pools with Amazon EC2 Container Service</title>
    <dc:date>2015-04-16T16:06:38+00:00</dc:date>
    <link>http://www.slideshare.net/nathariel/microservices-and-elastic-resource-pools-with-amazon-ec2-container-service</link>
    <dc:creator>jm</dc:creator><description><![CDATA[interesting approach to working around ECS' shortcomings -- bit specific to Hailo's microservices arch and IPC mechanism though.

aside: I like their version numbering scheme: ISO-8601, YYYYMMDDHHMMSS.  keep it simple!]]></description>
<dc:subject>versioning microservices hailo aws ec2 ecs docker containers scheduling allocation deployment provisioning qos</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:6721d7ee3f45/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:versioning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hailo"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ecs"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:scheduling"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:allocation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:provisioning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:qos"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://research.google.com/pubs/pub43438.html">
    <title>Large-scale cluster management at Google with Borg</title>
    <dc:date>2015-04-16T13:52:19+00:00</dc:date>
    <link>http://research.google.com/pubs/pub43438.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>Google's Borg system is a cluster manager that runs hundreds of thousands of jobs, from many thousands of different applications, across a number of clusters each with up to tens of thousands of machines. It achieves high utilization by combining admission control, efficient task-packing, over-commitment, and machine sharing with process-level performance isolation. It supports high-availability applications with runtime features that minimize fault-recovery time, and scheduling policies that reduce the probability of correlated failures. Borg simplifies life for its users by offering a declarative job specification language, name service integration, real-time job monitoring, and tools to analyze and simulate system behavior.
We present a summary of the Borg system architecture and features, important design decisions, a quantitative analysis of some of its policy decisions, and a qualitative examination of lessons learned from a decade of operational experience with it.</blockquote>

(via Conall)]]></description>
<dc:subject>via:conall clustering google papers scale to-read borg cluster-management deployment packing reliability redundancy</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e76acc614892/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:conall"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:clustering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:papers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:scale"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:to-read"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:borg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cluster-management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:reliability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:redundancy"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://corner.squareup.com/2015/04/keywhiz.html">
    <title>Keywhiz</title>
    <dc:date>2015-04-15T15:36:36+00:00</dc:date>
    <link>https://corner.squareup.com/2015/04/keywhiz.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>'a secret management and distribution service [from Square] that is now available for everyone. Keywhiz helps us with infrastructure secrets, including TLS certificates and keys, GPG keyrings, symmetric keys, database credentials, API tokens, and SSH keys for external services — and even some non-secrets like TLS trust stores. Automation with Keywhiz allows us to seamlessly distribute and generate the necessary secrets for our services, which provides a consistent and secure environment, and ultimately helps us ship faster. [...]

Keywhiz has been extremely useful to Square. It’s supported both widespread internal use of cryptography and a dynamic microservice architecture. Initially, Keywhiz use decoupled many amalgamations of configuration from secret content, which made secrets more secure and configuration more accessible. Over time, improvements have led to engineers not even realizing Keywhiz is there. It just works. Please check it out.'</blockquote>

]]></description>
<dc:subject>square security ops keys pki key-distribution key-rotation fuse linux deployment secrets keywhiz</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c4ff3d9449a6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:square"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:keys"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pki"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:key-distribution"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:key-rotation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fuse"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:secrets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:keywhiz"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://sandervanderburg.blogspot.ie/2014/07/managing-private-nix-packages-outside.html">
    <title>Managing private Nix packages outside the Nixpkgs tree</title>
    <dc:date>2015-03-23T12:25:15+00:00</dc:date>
    <link>http://sandervanderburg.blogspot.ie/2014/07/managing-private-nix-packages-outside.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Useful for private-repo Nix usage]]></description>
<dc:subject>nix packaging deployment ops build ci nixpkgs</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:fe5585e44425/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:nix"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:nixpkgs"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://concourse.ci/">
    <title>Concourse</title>
    <dc:date>2015-03-11T23:51:36+00:00</dc:date>
    <link>http://concourse.ci/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>Concourse is a CI system composed of simple tools and ideas. It can express entire pipelines, integrating with arbitrary resources, or it can be used to execute one-off builds, either locally or in another CI system.</blockquote>

]]></description>
<dc:subject>ci concourse-ci build deployment continuous-integration continuous-deployment devops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:ae3dccf71ef0/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:concourse-ci"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-integration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://blog.matthewskelton.net/2015/03/06/hp-is-trying-to-patent-continuous-delivery-here-is-how-you-can-help-block-this-madness/">
    <title>HP is trying to patent Continuous Delivery</title>
    <dc:date>2015-03-07T21:21:38+00:00</dc:date>
    <link>http://blog.matthewskelton.net/2015/03/06/hp-is-trying-to-patent-continuous-delivery-here-is-how-you-can-help-block-this-madness/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is appalling bollocks from HP:

<blockquote>On 1st March 2015 I discovered that in 2012 HP had filed a patent (WO2014027990) with the USPO for ‘Performance tests in a continuous deployment pipeline‘ (the patent was granted in 2014). [....] HP has filed several patents covering standard Continuous Delivery (CD) practices. You can help to have these patents revoked by providing ‘prior art’ examples on Stack Exchange.</blockquote>

In fairness, though, this kind of shit happens in most big tech companies.  This is what happens when you have a broken software patenting system, with big rewards for companies who obtain shitty troll patents like these, and in turn have companies who reward the engineers who sell themselves out to write up concepts which they know have prior art.  Software patents are broken by design!]]></description>
<dc:subject>cd devops hp continuous-deployment testing deployment performance patents swpats prior-art</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:a16ec2c9f13d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cd"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:hp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:patents"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:swpats"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:prior-art"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://blogs.aws.amazon.com/application-management/post/Tx33XKAKURCCW83/Automatically-Deploy-from-GitHub-Using-AWS-CodeDeploy">
    <title>Automatically Deploy from GitHub Using AWS CodeDeploy - Application Management Blog</title>
    <dc:date>2015-02-25T16:45:11+00:00</dc:date>
    <link>http://blogs.aws.amazon.com/application-management/post/Tx33XKAKURCCW83/Automatically-Deploy-from-GitHub-Using-AWS-CodeDeploy</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I like this]]></description>
<dc:subject>github aws ec2 codedeploy deployment ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2235bc32057f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:github"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:aws"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:codedeploy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://azure.microsoft.com/blog/2014/12/17/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/">
    <title>Final Root Cause Analysis and Improvement Areas: Nov 18 Azure Storage Service Interruption</title>
    <dc:date>2014-12-21T23:18:28+00:00</dc:date>
    <link>http://azure.microsoft.com/blog/2014/12/17/final-root-cause-analysis-and-improvement-areas-nov-18-azure-storage-service-interruption/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[For the record]]></description>
<dc:subject>root-cause azure outages postmortem cloud microsoft deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:9e35cdbf126f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:root-cause"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:azure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postmortem"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cloud"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microsoft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://wiki.gnome.org/Projects/OSTree">
    <title>OSTree</title>
    <dc:date>2014-12-09T22:36:38+00:00</dc:date>
    <link>https://wiki.gnome.org/Projects/OSTree</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>"git for operating system binaries".

OSTree is a tool for managing bootable, immutable, versioned filesystem trees. It is not a package system; nor is it a tool for managing full disk images. Instead, it sits between those levels, offering a blend of the advantages (and disadvantages) of both.

You can use any build system you like to place content into it on a build server, then export an OSTree repository via static HTTP. On each client system, "ostree admin upgrade" can incrementally replicate that content, creating a new root for the next reboot. This provides fully atomic upgrades. Any changes made to /etc are propagated forwards, and all local state in /var is shared.

A key goal of the project is to complement existing package systems like RPM and Debian packages, and help further their evolution. In particular for example, RPM-OSTree (linked below) has as a goal a hybrid tree/package model, where you replicate a base tree via OSTree, and then add packages on top.</blockquote>

]]></description>
<dc:subject>os gnome git linux immutable deployment packaging via:fanf</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7fcc1fbae602/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:os"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gnome"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:git"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:immutable"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:packaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:via:fanf"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.shopify.com/technology/15934308-docker-at-shopify-how-we-built-containers-that-power-over-100-000-online-shops">
    <title>Docker at Shopify: How we built containers that power over 100,000 onl</title>
    <dc:date>2014-11-25T12:03:56+00:00</dc:date>
    <link>http://www.shopify.com/technology/15934308-docker-at-shopify-how-we-built-containers-that-power-over-100-000-online-shops</link>
    <dc:creator>jm</dc:creator><description><![CDATA[excellent case study of production-scale usage of Docker]]></description>
<dc:subject>docker devops deployment ops shopify containers production</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:14b1174b98f7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shopify"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://azure.microsoft.com/blog/2014/11/19/update-on-azure-storage-service-interruption/">
    <title>Update on Azure Storage Service Interruption</title>
    <dc:date>2014-11-20T14:53:47+00:00</dc:date>
    <link>http://azure.microsoft.com/blog/2014/11/19/update-on-azure-storage-service-interruption/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>As part of a performance update to Azure Storage, an issue was discovered that resulted in reduced capacity across services utilizing Azure Storage, including Virtual Machines, Visual Studio Online, Websites, Search and other Microsoft services. Prior to applying the performance update, it had been tested over several weeks in a subset of our customer-facing storage service for Azure Tables. We typically call this “flighting,” as we work to identify issues before we broadly deploy any updates. The flighting test demonstrated a notable performance improvement and we proceeded to deploy the update across the storage service. During the rollout we discovered an issue that resulted in storage blob front ends going into an infinite loop, which had gone undetected during flighting. The net result was an inability for the front ends to take on further traffic, which in turn caused other services built on top to experience issues.</blockquote>

I'm really surprised MS deployment procedures allow a change to be rolled out globally across multiple regions on a single day.   I suspect they soon won't.]]></description>
<dc:subject>change-management cm microsoft outages postmortems azure deployment multi-region flighting azure-storage</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8acd095f17d5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:change-management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:cm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microsoft"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:outages"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postmortems"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:azure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:multi-region"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:flighting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:azure-storage"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath/219801#219801">
    <title>the JVM now supports globbing in classpath specifications</title>
    <dc:date>2014-11-19T11:51:12+00:00</dc:date>
    <link>http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath/219801#219801</link>
    <dc:creator>jm</dc:creator><description><![CDATA[hooray, no more uberjars or monster commandlines!]]></description>
<dc:subject>java jvm globbing classpath uberjars jars deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:985e11ba3303/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jvm"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:globbing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:classpath"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:uberjars"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jars"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://t37.net/is-docker-ready-for-production-feedbacks-of-a-2-weeks-hands-on.html">
    <title>Is Docker ready for production? Feedbacks of a 2 weeks hands on</title>
    <dc:date>2014-10-21T09:54:34+00:00</dc:date>
    <link>https://t37.net/is-docker-ready-for-production-feedbacks-of-a-2-weeks-hands-on.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[I have to agree with this assessment -- there are a lot of loose ends still for production use of Docker in a SOA stack environment:

<blockquote>From my point of view, Docker is probably the best thing I’ve seen in ages to automate a build. It allows to pre build and reuse shared dependencies, ensuring they’re up to date and reducing your build time. It avoids you to either pollute your Jenkins environment or boot a costly and slow Virtualbox virtual machine using Vagrant.  But I don’t feel like it’s production ready in a complex environment, because it adds too much complexity. And I’m not even sure that’s what it was designed for.
</blockquote>

]]></description>
<dc:subject>docker complexity devops ops production deployment soa web-services provisioning networking logging</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:7e2b93489b1c/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:complexity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:soa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:web-services"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:provisioning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:logging"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://techblog.netflix.com/2013/11/preparing-netflix-api-for-deployment.html">
    <title>Netflix release new code to production before completing tests</title>
    <dc:date>2014-10-10T21:15:54+00:00</dc:date>
    <link>http://techblog.netflix.com/2013/11/preparing-netflix-api-for-deployment.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Interesting -- I hadn't heard of this being an official practise anywhere before (although we actually did it ourselves this week)...

<blockquote>If a build has made it [past the 'integration test' phase], it is ready to be deployed to one or more internal environments for user-acceptance testing. Users could be UI developers implementing a new feature using the API, UI Testers performing end-to-end testing or automated UI regression tests. As far as possible, we strive to not have user-acceptance tests be a gating factor for our deployments. We do this by wrapping functionality in Feature Flags so that it is turned off in Production while testing is happening in other environments. </blockquote>

]]></description>
<dc:subject>devops deployment feature-flags release testing integration-tests uat qa production ops gating netflix</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2a3b3c58309f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:feature-flags"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:release"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:integration-tests"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:uat"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:qa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:production"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gating"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:netflix"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://forty9ten.com/post/64676776664/avoiding-chef-suck-with-auto-scaling-groups">
    <title>Avoiding Chef-Suck with Auto Scaling Groups - forty9ten</title>
    <dc:date>2014-09-23T13:43:29+00:00</dc:date>
    <link>http://forty9ten.com/post/64676776664/avoiding-chef-suck-with-auto-scaling-groups</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Some common problems which arise using Chef with ASGs in EC2, and how these guys avoided it -- they stopped using Chef for service provisioning, and instead baked AMIs when a new version was released.  ASGs using pre-baked AMIs definitely works well so this makes good sense IMO.]]></description>
<dc:subject>infrastructure chef ops asg auto-scaling ec2 provisioning deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2c44711b992b/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infrastructure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:chef"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:asg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:auto-scaling"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:provisioning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://rclayton.silvrback.com/failing-at-microservices">
    <title>Richard Clayton - Failing at Microservices</title>
    <dc:date>2014-08-18T10:39:24+00:00</dc:date>
    <link>https://rclayton.silvrback.com/failing-at-microservices</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Solid warts-and-all confessional blogpost about a team failing to implement a microservices architecture.  I'd put most of the blame on insufficient infrastructure to support them (at a code level), inter-personal team problems, and inexperience with large-scale complex multi-service production deployment and the work it was going to require]]></description>
<dc:subject>microservices devops collaboration architecture fail team deployment soa</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:84d4dbc41eb6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:collaboration"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:fail"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:team"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:soa"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.meetup.com/DevOps-Ireland/events/190786232/">
    <title>Building a Smarter Application Stack - DevOps Ireland</title>
    <dc:date>2014-06-30T10:07:41+00:00</dc:date>
    <link>http://www.meetup.com/DevOps-Ireland/events/190786232/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This sounds like a very interesting Dublin meetup -- Engine Yard on thursday night:

<blockquote>This month, we'll have Tomas Doran from Yelp talking about Docker, service discovery, and deployments. 'There are many advantages to a container based, microservices architecture - however, as always, there is no silver bullet. Any serious deployment will involve multiple host machines, and will have a pressing need to migrate containers between hosts at some point. In such a dynamic world hard coding IP addresses, or even host names is not a viable solution.  This talk will take a journey through how Yelp has solved the discovery problems using Airbnb’s SmartStack to dynamically discover service dependencies, and how this is helping unify our architecture, from traditional metal to EC2 ‘immutable’ SOA images, to Docker containers.'</blockquote>

]]></description>
<dc:subject>meetups talks dublin deployment smartstack ec2 docker yelp service-discovery</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:c729894d5fa6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:meetups"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:talks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dublin"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:smartstack"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ec2"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:yelp"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:service-discovery"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://blog.cloudbees.com/2012/09/continuous-deployment-for-mobile-apps.html">
    <title>Continuous Deployment for Mobile Apps with Jenkins: iOS Builds</title>
    <dc:date>2014-06-16T14:46:25+00:00</dc:date>
    <link>http://blog.cloudbees.com/2012/09/continuous-deployment-for-mobile-apps.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[the CloudBees-std way]]></description>
<dc:subject>build deployment ios jenkins iphone continuous-deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:12bfa12e5424/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:build"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ios"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:jenkins"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:iphone"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.brunton-spall.co.uk/post/2014/05/06/database-migrations-done-right/">
    <title>Database Migrations Done Right</title>
    <dc:date>2014-05-08T16:53:32+00:00</dc:date>
    <link>http://www.brunton-spall.co.uk/post/2014/05/06/database-migrations-done-right/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>The rule is simple. You should never tie database migrations to application deploys or vice versa. By minimising dependencies you enable faster, easier and cleaner deployments.</blockquote>

A solid description of why this is a good idea, from an ex-Guardian dev.]]></description>
<dc:subject>migrations database sql mysql postgres deployment ops dependencies loose-coupling</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:2e8db5bfa149/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:migrations"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:database"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:sql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mysql"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:postgres"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dependencies"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:loose-coupling"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://peter.bourgon.org/go-in-production/">
    <title>Go: Best Practices for Production Environments</title>
    <dc:date>2014-04-28T11:40:53+00:00</dc:date>
    <link>http://peter.bourgon.org/go-in-production/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[how Soundcloud deploy their Go services, after 2.5 years of Go in production]]></description>
<dc:subject>go tips deployment best-practices soundcloud ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e4292e28734a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:go"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:tips"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:best-practices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:soundcloud"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.meetup.com/London-Continuous-Delivery/events/100034862/">
    <title>Continuous Delivery with ETL Systems [video]</title>
    <dc:date>2014-03-21T16:04:25+00:00</dc:date>
    <link>http://www.meetup.com/London-Continuous-Delivery/events/100034862/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[<blockquote>Lonely Planet and Dr Foster Intelligence both make heavy use of ETL in their products, and both organisations have applied the principles of Continuous Delivery to their delivery process.
Some of the Continuous Delivery norms need to be adapted in the context of ETL, and some interesting patterns emerge, such as running Continuous Integration against data, as well as code.</blockquote>]]></description>
<dc:subject>etl video presentations lonely-planet dr-foster-intelligence continuous-delivery deployment pipelines</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:e178b4690b79/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:etl"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:video"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:presentations"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lonely-planet"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:dr-foster-intelligence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-delivery"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pipelines"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://literateprogrammer.blogspot.co.uk/2014/03/the-microservice-declaration-of.html">
    <title>The Microservice Declaration of Independence</title>
    <dc:date>2014-03-20T15:19:10+00:00</dc:date>
    <link>http://literateprogrammer.blogspot.co.uk/2014/03/the-microservice-declaration-of.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA["Microservices" seems to be yet another term for SOA; small, decoupled, independently-deployed services, with well-defined public HTTP APIs. Pretty much all the services I've worked on over the past few years have been built in this style. Still, let's keep an eye on this concept anyway.

Another definition seems to be a more FP-style one: http://www.slideshare.net/michaelneale/microservices-and-functional-programming -- where the "microservice" does one narrowly-defined thing, and that alone.]]></description>
<dc:subject>microservices soa architecture handwaving http services web deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:3c13e569ef49/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:soa"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:handwaving"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:http"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:services"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:web"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/oleiade/trousseau">
    <title>Trousseau</title>
    <dc:date>2014-02-11T12:26:54+00:00</dc:date>
    <link>https://github.com/oleiade/trousseau</link>
    <dc:creator>jm</dc:creator><description><![CDATA['an interesting approach to a common problem, that of securely passing secrets around an infrastructure. It uses GPG signed files under the hood and nicely integrates with both version control systems and S3.'

I like this as an approach to securely distributing secrets across a stack of services during deployment.  Check in the file of keys, gpg keygen on the server, and add it to the keyfile's ACL during deployment.  To simplify, shared or pre-generated GPG keys could also be used.

(via the Devops Weekly newsletter)]]></description>
<dc:subject>gpg encryption crypto secrets key-distribution pki devops deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:62b9738d3540/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:gpg"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:encryption"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:crypto"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:secrets"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:key-distribution"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pki"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/baudehlo/deploy_to_runit">
    <title>deploy_to_runit</title>
    <dc:date>2014-01-20T21:51:10+00:00</dc:date>
    <link>https://github.com/baudehlo/deploy_to_runit</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A nice node.js app to perform continuous deployment from a GitHub repo via its webhook support, from Matt Sergeant]]></description>
<dc:subject>github node.js runit deployment git continuous-deployment devops ops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:9aeabd119bbf/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:github"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:node.js"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:runit"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:git"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://rc3.org/2013/03/03/dont-get-stuck/">
    <title>Don’t get stuck</title>
    <dc:date>2014-01-04T21:30:16+00:00</dc:date>
    <link>http://rc3.org/2013/03/03/dont-get-stuck/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Good description of Etsy's take on continuous deployment, committing directly to trunk, hidden with feature-flags, from Rafe Colburn]]></description>
<dc:subject>continuous-deployment coding agile deployment devops etsy rafe-colburn</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:d8dec5f4bf39/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:coding"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:agile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:etsy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:rafe-colburn"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://engineering.thetrainline.com/2013/12/02/moving-to-multiple-deployments-per-week-at-thetrainline-com/">
    <title>Moving to Multiple Deployments Per Week at thetrainline.com</title>
    <dc:date>2013-12-30T00:22:40+00:00</dc:date>
    <link>http://engineering.thetrainline.com/2013/12/02/moving-to-multiple-deployments-per-week-at-thetrainline-com/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[continuous delivery using Thoughtworks Go.  The UI is quite similar to the internal Amazon C-D system, notably]]></description>
<dc:subject>thoughtworks continuous-delivery continuous-deployment devops deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:8bb0abb6492f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:thoughtworks"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-delivery"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:continuous-deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/">
    <title>Docker all the things at Atlassian: automation and wiring</title>
    <dc:date>2013-11-28T17:42:04+00:00</dc:date>
    <link>https://blogs.atlassian.com/2013/11/docker-all-the-things-at-atlassian-automation-and-wiring/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[A nice worked-through Docker example]]></description>
<dc:subject>docker infrastructure devops ops deployment lxc containers linux</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:cabd127a5fe5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:infrastructure"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:lxc"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://pl.atyp.us/2013-11-shared-libraries.html">
    <title>Shared Libraries are Obsolete</title>
    <dc:date>2013-11-26T23:14:06+00:00</dc:date>
    <link>http://pl.atyp.us/2013-11-shared-libraries.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[pretty strong argument. However, I think shlibs still have an advantage in that their pages are easier to share...]]></description>
<dc:subject>shared-libraries unix linux linker deployment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:738b282d2a97/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:shared-libraries"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:unix"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.feld.com/wp/archives/2013/07/why-every-company-needs-a-devops-team-now.html">
    <title>Why Every Company Needs A DevOps Team Now - Feld Thoughts</title>
    <dc:date>2013-11-04T14:17:49+00:00</dc:date>
    <link>http://www.feld.com/wp/archives/2013/07/why-every-company-needs-a-devops-team-now.html</link>
    <dc:creator>jm</dc:creator><description><![CDATA[Bookmarking particularly for the 3 "favourite DevOps patterns":

<blockquote>
"Make sure we have environments available early in the Development process"; enforce a policy that the code and environment are tested together, even at the earliest stages of the project; “Wake up developers up at 2 a.m. when they break things"; and "Create reusable deployment procedures".</blockquote>

]]></description>
<dc:subject>devops work ops deployment testing pager-duty</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:53e5a44c03d1/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:work"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:testing"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:pager-duty"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://mesosphere.io/2013/09/26/docker-on-mesos/">
    <title>Mesosphere · Docker on Mesos</title>
    <dc:date>2013-09-26T21:19:18+00:00</dc:date>
    <link>http://mesosphere.io/2013/09/26/docker-on-mesos/</link>
    <dc:creator>jm</dc:creator><description><![CDATA[This is cool. Deploy Docker container images onto a Mesos cluster: key point, in the description of the Redis example: 'there’s no need to install Redis or its supporting libraries on your Mesos hosts.']]></description>
<dc:subject>mesos docker deployment ops images virtualization containers linux</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:jm/b:4327725c5c80/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:mesos"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:docker"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:deployment"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:ops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:images"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:virtualization"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:containers"/>
	<rdf:li rdf:resource="https://pinboard.in/u:jm/t:linux"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>