SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
Platform App Deployment:
Structure and Opinions
Andrew Ripka
@rippmn
Self Service Platform App Deployment
via Structured Automation with Opinion
overrides via Callbacks
http://robohub.org/wp-content/uploads/2017/06/Deep-Learning-for-Robots.jpg
Structure - framework for producing outcomes
Opinions - specific implementations reaching desired
outcomes
Context
Platform
● A platform is a means to repeatedly (re)deploy and run
software
● Every platform is built with some degree of deployment
process automation and software choice constraints
http://az616578.vo.msecnd.net/files/2016/05/26/6359988285581910301941710475_choices1.jpg
If current platform doesn’t provide
enough automation, developers will build
themselves
With tools and constraints they chose...
https://diyhacking.com/wp-content/uploads/2017/06/walking-robot-with-stick.jpg
Ad hoc automation is awesome, until
someone who wasn’t involved gets
paged.
(Like the operations team)
https://www.visiplex.com/wp-content/uploads/vp4_01.jpg
A platform’s overall goal should be to
make the right thing to do the easiest
thing to do
(thus providing automation with desired constraints)
http://ecommerceinsiders.com/wp-content/uploads/2014/12/press-the-easy-button.jpg
Powered by Self Service API to trigger
the software deployment lifecycle (and
other features)
http://synergisticsresearch.com/wp-content/uploads/2016/01/Bank-branch.png
But do so with some constraints
http://www.ashendenlaw.com/wp-content/uploads/2014/12/guardrail.jpg
That can be added to or changed
http://4eastcounty.org/wp-content/uploads/2013/02/7-Installation-of-Metal-Beam-Guardrail.jpg
● Provide a framework that defines deployment lifecycle
structured with API callbacks
● Use the framework to implement existing deployment
models with it as base opinions
● Provide a means for devs to use lifecycle to sandbox new
deployment opinions for reuse by others (once
operationalized)
Providing a Platform
https://static1.squarespace.com/static/546e372ce4b0653257df39c0/t/54bd2bede4b0bb2b01b280b0/1421683696027/process.png?format=1500w
An example from Cloud Foundry
Self Service API - Cloud Controller
● Fine grained Rest API to the
platform app lifecycle
● CLI - Coarse grained tool to call
REST API
>cf push
https://apidocs.cloudfoundry.org/268/
● App Deployment Lifecycle Callback
● Process that builds container images
● Defines software to be used to run apps
The Buildpack
https://www.launch-marketing.com/wp-content/uploads/2011/11/box-1.jpg
Buildpack Callback Structure
3 Method API
● Detect
● Compile
● Release
http://www.dpdhl.com/content/dam/dpdhl/presse/mediathek/bilder/dp_parcel_transfer/dp_parcel_transfer_474.jpg
Detect
Determine if attributes of the app type(s) that can be handled
exist in provided artifacts
http://stories.barkpost.com/wp-content/uploads/2016/04/Bomb-sniffing-dog.jpg
Compile
Collect and assemble necessary software to run the
application type
https://i.pinimg.com/736x/a7/2c/4e/a72c4e2877f0adcdc22d334c2be28ba2--lego-building-house-
Release
Define how to run the packaged application
https://www.gannett-cdn.com/-mm-/5007d4e9463fb9a571a8fdccfb2017aec8add2e7/c=326-0-5433-3840&r=x393&c=520x390/local/-/media/2016/08/18/FortMyers/Fort
Myers/636071197785140189-e8release078.JPG
Provided Buildpacks (Opinions)
● Binary
● GO
● Java
● .Net Core
● Node JS
● PHP
● Python
● Ruby
● Staticfile
http://docs.cloudfoundry.org/buildpacks/index.html
“Opinions when you want them, structure
when you don’t”
https://www.multirotor.net/images/header-images/customer-opinions.jpg

Contenu connexe

Tendances

QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
Rodrigo Russo
 

Tendances (20)

Rakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real WorldRakuten and Microsoft talk DevOps in Real World
Rakuten and Microsoft talk DevOps in Real World
 
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
EVOLVE'16 | Keynote | Cat Reusswig | Taking Your AEM Implementation to The RO...
 
Practical CICS application deployment using DevOps approach
Practical CICS application deployment using DevOps approachPractical CICS application deployment using DevOps approach
Practical CICS application deployment using DevOps approach
 
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
CloudBees Jenkins and Pivotal Cloud Foundry - Continuous Delivery for Cloud N...
 
Flex on Grails - Rich Internet Applications With Rapid Application Development
Flex on Grails - Rich Internet Applications With Rapid Application DevelopmentFlex on Grails - Rich Internet Applications With Rapid Application Development
Flex on Grails - Rich Internet Applications With Rapid Application Development
 
Cross Platform Devops with Visual Studio Team Services
Cross Platform Devops with Visual Studio Team ServicesCross Platform Devops with Visual Studio Team Services
Cross Platform Devops with Visual Studio Team Services
 
Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...Drupal Europe 2018: Hackers automate but the drupal community still downloads...
Drupal Europe 2018: Hackers automate but the drupal community still downloads...
 
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous IntegrationQConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
QConSP 2014 - Continuous Delivery - Part 03 - Continuous Integration
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"
 
Software developmentlifecycleinmuleesb
Software developmentlifecycleinmuleesbSoftware developmentlifecycleinmuleesb
Software developmentlifecycleinmuleesb
 
Twelve factor apps
Twelve factor appsTwelve factor apps
Twelve factor apps
 
Orchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release PipelineOrchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release Pipeline
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using Bamboo
 
Mobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and DockerMobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and Docker
 
Api360 Summit The Automated Monolith
Api360 Summit  The Automated MonolithApi360 Summit  The Automated Monolith
Api360 Summit The Automated Monolith
 
Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CD
 
Merge hells!! feature toggles to the rescue
Merge hells!! feature toggles to the rescueMerge hells!! feature toggles to the rescue
Merge hells!! feature toggles to the rescue
 
Orchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release PipelineOrchestrate Your End-to-end Mainframe Application Release Pipeline
Orchestrate Your End-to-end Mainframe Application Release Pipeline
 
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
Using PaaS for Continuous Delivery (Cloud Foundry Summit 2014)
 
Automate your build on Android with Jenkins
Automate your build on Android with JenkinsAutomate your build on Android with Jenkins
Automate your build on Android with Jenkins
 

En vedette

En vedette (7)

Cloud Foundry Foundation Keynote
Cloud Foundry Foundation KeynoteCloud Foundry Foundation Keynote
Cloud Foundry Foundation Keynote
 
Cloud Foundry CF LOGS stack
Cloud Foundry CF LOGS stackCloud Foundry CF LOGS stack
Cloud Foundry CF LOGS stack
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring Cloud
 
Structure and Opinions - Software Deployments with Cloud Foundry
Structure and Opinions - Software Deployments with Cloud FoundryStructure and Opinions - Software Deployments with Cloud Foundry
Structure and Opinions - Software Deployments with Cloud Foundry
 
Navigating the Ecosystem of Pivotal Cloud Foundry Tiles
Navigating the Ecosystem of Pivotal Cloud Foundry TilesNavigating the Ecosystem of Pivotal Cloud Foundry Tiles
Navigating the Ecosystem of Pivotal Cloud Foundry Tiles
 
Containers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry ApproachContainers & Cloud Native Ops Cloud Foundry Approach
Containers & Cloud Native Ops Cloud Foundry Approach
 
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
 

Similaire à Platform App Deployment : Structure and Opinions

Mashup2010
Mashup2010Mashup2010
Mashup2010
steccami
 
Datasheet apachepluginforrd
Datasheet apachepluginforrdDatasheet apachepluginforrd
Datasheet apachepluginforrd
MidVision
 
COMPRO- WEB ALBUM & MOTION ANALYZER
COMPRO- WEB ALBUM  & MOTION ANALYZERCOMPRO- WEB ALBUM  & MOTION ANALYZER
COMPRO- WEB ALBUM & MOTION ANALYZER
Ashish Tanwer
 
Datasheet anthillpropluginforrd
Datasheet anthillpropluginforrdDatasheet anthillpropluginforrd
Datasheet anthillpropluginforrd
MidVision
 

Similaire à Platform App Deployment : Structure and Opinions (20)

Application telemetry public
Application telemetry publicApplication telemetry public
Application telemetry public
 
Develop a SharePoint App in 45 Minutes
Develop a SharePoint App in 45 MinutesDevelop a SharePoint App in 45 Minutes
Develop a SharePoint App in 45 Minutes
 
Mashup2010
Mashup2010Mashup2010
Mashup2010
 
Installation of Silk Test Framework
Installation of Silk Test FrameworkInstallation of Silk Test Framework
Installation of Silk Test Framework
 
MMS2011_BC34_Plas_Final
MMS2011_BC34_Plas_FinalMMS2011_BC34_Plas_Final
MMS2011_BC34_Plas_Final
 
Datasheet apachepluginforrd
Datasheet apachepluginforrdDatasheet apachepluginforrd
Datasheet apachepluginforrd
 
Women in Automation 2024: Technical session - Get your career started in auto...
Women in Automation 2024: Technical session - Get your career started in auto...Women in Automation 2024: Technical session - Get your career started in auto...
Women in Automation 2024: Technical session - Get your career started in auto...
 
SE - Lecture 9 n 10 Intro Robotic Process Automation.pptx
SE - Lecture 9 n 10 Intro Robotic Process Automation.pptxSE - Lecture 9 n 10 Intro Robotic Process Automation.pptx
SE - Lecture 9 n 10 Intro Robotic Process Automation.pptx
 
Comparison of RPA Tools
Comparison of RPA ToolsComparison of RPA Tools
Comparison of RPA Tools
 
Project report
Project report Project report
Project report
 
Power automate and power BI January 22 Baku
Power automate and power BI January 22 BakuPower automate and power BI January 22 Baku
Power automate and power BI January 22 Baku
 
Return Of The Browser Wars Ajax World West2007
Return Of The Browser Wars Ajax World West2007Return Of The Browser Wars Ajax World West2007
Return Of The Browser Wars Ajax World West2007
 
Capstone- Milestone 3
Capstone- Milestone 3Capstone- Milestone 3
Capstone- Milestone 3
 
Eclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three RuntimesEclipse - Single Source;Three Runtimes
Eclipse - Single Source;Three Runtimes
 
Bootstrap4XPages
Bootstrap4XPagesBootstrap4XPages
Bootstrap4XPages
 
Side loading
Side loadingSide loading
Side loading
 
COMPRO- WEB ALBUM & MOTION ANALYZER
COMPRO- WEB ALBUM  & MOTION ANALYZERCOMPRO- WEB ALBUM  & MOTION ANALYZER
COMPRO- WEB ALBUM & MOTION ANALYZER
 
summary
summarysummary
summary
 
Datasheet anthillpropluginforrd
Datasheet anthillpropluginforrdDatasheet anthillpropluginforrd
Datasheet anthillpropluginforrd
 
A Modern Dive into QA Automation and Beyond
A Modern Dive into QA Automation and BeyondA Modern Dive into QA Automation and Beyond
A Modern Dive into QA Automation and Beyond
 

Dernier

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Platform App Deployment : Structure and Opinions

  • 1. Platform App Deployment: Structure and Opinions Andrew Ripka @rippmn
  • 2. Self Service Platform App Deployment via Structured Automation with Opinion overrides via Callbacks http://robohub.org/wp-content/uploads/2017/06/Deep-Learning-for-Robots.jpg
  • 3. Structure - framework for producing outcomes Opinions - specific implementations reaching desired outcomes Context
  • 4. Platform ● A platform is a means to repeatedly (re)deploy and run software ● Every platform is built with some degree of deployment process automation and software choice constraints http://az616578.vo.msecnd.net/files/2016/05/26/6359988285581910301941710475_choices1.jpg
  • 5. If current platform doesn’t provide enough automation, developers will build themselves With tools and constraints they chose... https://diyhacking.com/wp-content/uploads/2017/06/walking-robot-with-stick.jpg
  • 6. Ad hoc automation is awesome, until someone who wasn’t involved gets paged. (Like the operations team) https://www.visiplex.com/wp-content/uploads/vp4_01.jpg
  • 7. A platform’s overall goal should be to make the right thing to do the easiest thing to do (thus providing automation with desired constraints) http://ecommerceinsiders.com/wp-content/uploads/2014/12/press-the-easy-button.jpg
  • 8. Powered by Self Service API to trigger the software deployment lifecycle (and other features) http://synergisticsresearch.com/wp-content/uploads/2016/01/Bank-branch.png
  • 9. But do so with some constraints http://www.ashendenlaw.com/wp-content/uploads/2014/12/guardrail.jpg
  • 10. That can be added to or changed http://4eastcounty.org/wp-content/uploads/2013/02/7-Installation-of-Metal-Beam-Guardrail.jpg
  • 11. ● Provide a framework that defines deployment lifecycle structured with API callbacks ● Use the framework to implement existing deployment models with it as base opinions ● Provide a means for devs to use lifecycle to sandbox new deployment opinions for reuse by others (once operationalized) Providing a Platform https://static1.squarespace.com/static/546e372ce4b0653257df39c0/t/54bd2bede4b0bb2b01b280b0/1421683696027/process.png?format=1500w
  • 12. An example from Cloud Foundry
  • 13. Self Service API - Cloud Controller ● Fine grained Rest API to the platform app lifecycle ● CLI - Coarse grained tool to call REST API >cf push https://apidocs.cloudfoundry.org/268/
  • 14. ● App Deployment Lifecycle Callback ● Process that builds container images ● Defines software to be used to run apps The Buildpack https://www.launch-marketing.com/wp-content/uploads/2011/11/box-1.jpg
  • 15. Buildpack Callback Structure 3 Method API ● Detect ● Compile ● Release http://www.dpdhl.com/content/dam/dpdhl/presse/mediathek/bilder/dp_parcel_transfer/dp_parcel_transfer_474.jpg
  • 16. Detect Determine if attributes of the app type(s) that can be handled exist in provided artifacts http://stories.barkpost.com/wp-content/uploads/2016/04/Bomb-sniffing-dog.jpg
  • 17. Compile Collect and assemble necessary software to run the application type https://i.pinimg.com/736x/a7/2c/4e/a72c4e2877f0adcdc22d334c2be28ba2--lego-building-house-
  • 18. Release Define how to run the packaged application https://www.gannett-cdn.com/-mm-/5007d4e9463fb9a571a8fdccfb2017aec8add2e7/c=326-0-5433-3840&r=x393&c=520x390/local/-/media/2016/08/18/FortMyers/Fort Myers/636071197785140189-e8release078.JPG
  • 19. Provided Buildpacks (Opinions) ● Binary ● GO ● Java ● .Net Core ● Node JS ● PHP ● Python ● Ruby ● Staticfile http://docs.cloudfoundry.org/buildpacks/index.html
  • 20. “Opinions when you want them, structure when you don’t” https://www.multirotor.net/images/header-images/customer-opinions.jpg