SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Delivering Developer
Tools at Scale
Joe Levy (@jodoglevy) – Principal Technical Program Manager
Mike Ross – Senior Software Engineer
Oracle Bare Metal Cloud Services, Developer Experience
Oracle Bare Metal Cloud Services
• Infrastructure as a service (IaaS)
 Compute (physical and virtual machines)
 Block Storage
 Virtual Networking
 Identity
 Load Balancing
 Object Storage
 Audit
 Database
• Built by ex-cloud folks
• More info:
https://cloud.oracle.com/en_US/bare-
metal
Demo
Bare Metal Cloud Services
March 2015
Developer Experience:
Support devs where they are (languages)
Developer Experience:
Support devs where they are (tools)
https://www.linux.com/news/top-open-source-cloud-projects-2014
Developer Experience (aka fill all the boxes)
Compute Block
Storage
Virtual
Networking
Load
Balancing
Object
Storage
Audit Database
Java
SDK
Python
SDK
Ruby
SDK
CLI
HDFS
Connector
Chef Knife
Plugin
Terraform
Provider
Developer Experience: Progress to date
Compute Block
Storage
Virtual
Networking
Load
Balancing
Object
Storage
Audit Database
Java
SDK
In preview
Python
SDK
N/A
Ruby
SDK
In preview N/A
CLI N/A In preview
HDFS
Connector
N/A N/A N/A N/A N/A N/A
Chef Knife
Plugin
N/A N/A N/A N/A
Terraform
Provider
N/A
Developer Experience: Progress to date
Boxes: 7 dev tools X 7 services = 49
Team: 6 devs
Developer Experience: The future
Compute Block
Storage
Virtual
Networking
Load
Balancing
Object
Storage
Audit Database
Java
SDK
In preview
Python
SDK
N/A
Ruby
SDK
In preview N/A
CLI N/A In preview
HDFS
Connector
N/A N/A N/A N/A N/A N/A
Chef Knife
Plugin
N/A N/A N/A N/A
Terraform
Provider
N/A
Fortran
SDK
Logo
SDK
…
Developer Experience: The future
Boxes: N dev tools X 7 services = 7N
Team: 6 devs
Developer Experience: The future (for real)
Compute Block
Storage
Virtual
Networking
Load
Balancing
Object
Storage
Audit Database Puppies
as a
service
Haircuts
as a
service
…
Java
SDK
In preview
Python
SDK
N/A
Ruby
SDK
In
preview
N/A
CLI N/A In preview
HDFS
Connector
N/A N/A N/A N/A N/A N/A
Chef Knife
Plugin
N/A N/A N/A N/A
Terraform
Provider
N/A
Fortran
SDK
Logo
SDK
…
Developer Experience: The future (for real)
Boxes: N dev tools X M services
Team: 6 devs
Developer Experience: The future
(for real, for real)
• Every service is actually a collection of many resources
• More resources added to each service over time, all needing dev tools support
• VCN service resources:
• Cpe
• CrossConnect
• CrossConnectGroup
• CrossConnectMapping
• CrossConnectLocation
• CrossConnectPortShapeSpeed
• CrossConnectStatus
• DhcpOption
• Drg
• DrgAttachment
• EgressSecurityRule
• FastConnectProviderService
• IcmpOptions
• IngressSecurityRule
• InternetGateway
• IpSecConnection
• PortRange
• RouteRule
• RouteTable
• SecurityList
• Subnet
• TcpOptions
• TunnelConfig
• TunnelStatus
• UdpOptions
• Vcn
• VirtualCircuit
• VirtualCircuitBandwithShape
• Vnic
• VnicAttachment
Developer Experience: The future
(for real, for real)
Compute Block
Storage
Virtual
Networking
Load
Balancing
Object
Storage
Audit Database Puppies
as a
service
Haircuts
as a
service
…
Java
SDK
In preview
Python
SDK
N/A
Ruby
SDK
In
preview
N/A
CLI N/A In preview
HDFS
Connector
N/A N/A N/A N/A N/A N/A
Chef Knife
Plugin
N/A N/A N/A N/A
Terraform
Provider
N/A
Fortran
SDK
Logo
SDK
…
Developer Experience: The future
(for real, for real)
Boxes: N dev tools X M services X Z features
Team: 6 devs
Developer Experience: The future
(for real, for real, for real)
• Pace of innovation rapidly increasing
• 1 year ago org size: 300
• 1 year ago Developer Experience team size: 4 devs
• Today org size: 850 (+185%)
• Today Developer Experience team size: 6 devs (+50%)
• 1 year from now org size: 1,500 (+80%)
• 1 year from now Developer Experience team size: 9 devs (+50%)
• We must maintain feature parity, despite team size not scaling at same pace as org at large
Developer Experience: The future
(for real, for real, for real)
Boxes: N dev tools X M services X Z features X Y pace of innovation
Team: 6 devs
Developer Experience: The future
(for real, for real, for real, for real)
• Different release scopes:
• Internal-only
• Our services call each other
• For their own infrastructure management
• To enable some cross-service customer use cases
• Some of the APIs / parameters they use are not meant for public consumption
• Internal-preview
• Let Oracle and special customers try features before we’re ready to publicize them
• Public-preview
• Let public customers try out new features before we certify them as production-ready
• Public
• Release a feature as production-ready, to the public
Developer Experience: The future
(for real, for real, for real, for real)
Boxes: N dev tools X M services X Z features X Y pace of innovation X W release scopes
Team: 6 devs
The problem:
How to keep up with work of this scale!?
Boxes: N dev tools X M services X Z features X Y pace of innovation X W release scopes
Team: 6 devs
The solution
• Swagger
• Open Sourcing
• API Consistency
Swagger
• https://swagger.io
• Declaratively describe REST APIs in a machine-readable way
• Manage your services’ interface specifications as you would your code
• Open Source
• Useful for:
 Generating REST API documentation
 Code reviewing REST APIs (to ensure good REST use, and consistency across BMCS APIs)
 Automated & manual
 Creating automated pipelines around service specifications
 Service (scaffolding) generation
 Client generation! (open source generators exist for many languages)
 We generate:
 Java SDK
 Ruby SDK
 Python SDK
 CLI
 Generated Terraform provider (work in progress)
Swagger spec: Launch instance
Results when generated
• REST API docs
• Java SDK
• Python SDK
• Ruby SDK
• CLI: bmcs compute instance launch
Demo
Swagger and Bare Metal Cloud Services
Swagger: Cons & Gotchas
• Making modifications / polish to generated code
• Keeping backwards compatibility as the Swagger spec changes
• Contributions require understanding of metaprogramming and Swagger codegen, not
just language the dev tool was “written” in
• Non-language-related build tooling needed to contribute
 Ex: Maven (Java) required to build Python SDK
Open Sourcing
• Get the developer community involved
 Finding and fixing issues
 Adding new features
 Answering questions
 Improving documentation
• Create advocates for your products
• Find potential hires who are passionate about the area you work in
• Be a good developer citizen -- let others use your code as a basis for their projects / learning
• Other useful parts of GitHub:
 Archived releases
 Subscribe-able release notification channel
 Metrics
• Open sourced so far:
 Java SDK: https://github.com/oracle/bmcs-java-sdk
 Python SDK: https://github.com/oracle/bmcs-python-sdk
 Terraform Provider: https://github.com/oracle/terraform-provider-baremetal
 Chef BMCS Knife Plugin: https://github.com/oracle/knife-bmcs
 CLI (soon!)
Open Sourcing: Cons & Gotchas
• Syncing changes between GitHub repository and internal repository
• Keeping private things, private
• Accepting pull requests on generated code (since we codegen our code)
API Consistency
• Useful to the user
• Can build higher-level functionality once per dev tool (instead of once per resource), since
resources do things same way
 Ex: pagination
 BMCS list APIs return opc-next-page header, and take in that header’s value via query string: ?page=<token>
 Ex: waiters
 BMCS resources have a lifecycleState field to indicate creation / updating / deleting status
• Reduces need to special case generated code
 Ex: serializing OR filter semantics into an API call
 /cars?make=subaru&make=toyota
• Makes testing easier
 When resources are managed similarly, test cases are similar too
 Less investigation / writing of new code, more porting existing tests for a new resource type
• Swagger makes API consistency much easier!
 Swagger = service interface specifications as code
 Diffs
 Code review tools
 Automated review
One problem area left:
Multiple release scopes
N dev tools X M services X Z features X Y pace of innovation X W release scopes
• Internal-only
• Our services call each other
• For their own infrastructure management
• To enable some cross-service customer use cases
• Some of the APIs / parameters they use are not meant for public consumption
• Internal-preview
• Let Oracle and special customers try features before we’re ready to publicize them
• Public-preview
• Let public customers try out new features before we certify them as production-ready
• Public
• Release a feature as production-ready, to the public
Addressing the Problem:
Multiple release scopes
release
preview
some-feature-to-go-public
internal
some-never-public-feature
Swagger spec branching
Addressing the Problem:
Multiple release scopes
Swagger spec custom fields
CreatePuppyDetails:
properties:
name:
maxLength: 255
minLength: 1
type: string
ownerId:
maxLength: 255
minLength: 1
type: string
isPottyTrained:
type: boolean
x-obmcs-preview-only: true
dogType:
type: string
canBreatheFire:
type: boolean
x-obmcs-internal-only: true
• x-obmcs-preview-only
• Filtered out in public dev tool
generation
• Gets a preview disclaimer in its
description in preview dev tools
• x-obmcs-internal-only
• Filtered out in preview and public dev
tool generation
Q/A
P.S. – we’re hiring! Interested in this kind of thing?
Email me at joe.levy@oracle.com or come find me afterwards

Weitere ähnliche Inhalte

Was ist angesagt?

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Lucas Jellema
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
Animesh Singh
 
Cloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStackCloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStack
Animesh Singh
 

Was ist angesagt? (20)

Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
Event Bus as Backbone for Decoupled Microservice Choreography (JFall 2017)
 
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
How to build a Distributed Serverless Polyglot Microservices IoT Platform us...
 
56k.cloud training
56k.cloud training56k.cloud training
56k.cloud training
 
DCEU 18: Docker Container Networking
DCEU 18: Docker Container NetworkingDCEU 18: Docker Container Networking
DCEU 18: Docker Container Networking
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics
 
Docker for the Enterprise with Containers as a Service by Banjot Chanana
Docker for the Enterprise with Containers as a Service by Banjot ChananaDocker for the Enterprise with Containers as a Service by Banjot Chanana
Docker for the Enterprise with Containers as a Service by Banjot Chanana
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro services
 
Transforming Application Delivery with PaaS and Linux Containers
Transforming Application Delivery with PaaS and Linux ContainersTransforming Application Delivery with PaaS and Linux Containers
Transforming Application Delivery with PaaS and Linux Containers
 
Advanced dev ops governance with terraform
Advanced dev ops governance with terraformAdvanced dev ops governance with terraform
Advanced dev ops governance with terraform
 
Everything You Need to Know About Docker and Storage by Ryan Wallner, ClusterHQ
Everything You Need to Know About Docker and Storage by Ryan Wallner, ClusterHQ Everything You Need to Know About Docker and Storage by Ryan Wallner, ClusterHQ
Everything You Need to Know About Docker and Storage by Ryan Wallner, ClusterHQ
 
Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
 
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java ApplicationsAutomating CICD Pipeline with GitLab and Docker Containers for Java Applications
Automating CICD Pipeline with GitLab and Docker Containers for Java Applications
 
Using Rancher and Docker with RightScale at Industrie IT
Using Rancher and Docker with RightScale at Industrie IT Using Rancher and Docker with RightScale at Industrie IT
Using Rancher and Docker with RightScale at Industrie IT
 
Java one kubernetes, jenkins and microservices
Java one   kubernetes, jenkins and microservicesJava one   kubernetes, jenkins and microservices
Java one kubernetes, jenkins and microservices
 
Cloud-native Application Lifecycle Management
Cloud-native Application Lifecycle ManagementCloud-native Application Lifecycle Management
Cloud-native Application Lifecycle Management
 
Chugging Our Own "Craft Brew” – HPE’s Journey Towards Containers-as-a-Service...
Chugging Our Own "Craft Brew” – HPE’s Journey Towards Containers-as-a-Service...Chugging Our Own "Craft Brew” – HPE’s Journey Towards Containers-as-a-Service...
Chugging Our Own "Craft Brew” – HPE’s Journey Towards Containers-as-a-Service...
 
Cloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStackCloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStack
 
Auto Scaling for Multi-Tier Containers Topology
Auto Scaling for Multi-Tier Containers TopologyAuto Scaling for Multi-Tier Containers Topology
Auto Scaling for Multi-Tier Containers Topology
 
Cloud Native Architectures for Devops
Cloud Native Architectures for DevopsCloud Native Architectures for Devops
Cloud Native Architectures for Devops
 
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons LearntAs a Service: Cloud Foundry on OpenStack - Lessons Learnt
As a Service: Cloud Foundry on OpenStack - Lessons Learnt
 

Ähnlich wie Delivering Developer Tools at Scale

Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
Amazon Web Services
 
Docker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewDocker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - Overview
Chris Ciborowski
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
Alexandre Morgaut
 
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Jonas Rosland
 

Ähnlich wie Delivering Developer Tools at Scale (20)

DevOps for Databricks
DevOps for DatabricksDevOps for Databricks
DevOps for Databricks
 
Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
Real World Development: Peeling The Onion – Migrating A Monolithic Applicatio...
 
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
 
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
PHPFrameworkDay 2020 - Different software evolutions from Start till Release ...
 
"Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa..."Different software evolutions from Start till Release in PHP product" Oleksa...
"Different software evolutions from Start till Release in PHP product" Oleksa...
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realists
 
Content Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortalsContent Strategy and Developer Engagement for DevPortals
Content Strategy and Developer Engagement for DevPortals
 
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
An Open Source Workbench for Prototyping Multimodal Interactions Based on Off...
 
Announcing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck TalksAnnouncing AWS CodeBuild - January 2017 Online Teck Talks
Announcing AWS CodeBuild - January 2017 Online Teck Talks
 
DevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWSDevOps on GCP Course Compared to AWS
DevOps on GCP Course Compared to AWS
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker Slides
 
Docker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewDocker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - Overview
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidad
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015Docker & aPaaS: Enterprise Innovation and Trends for 2015
Docker & aPaaS: Enterprise Innovation and Trends for 2015
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
 
API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)API workshop: Introduction to APIs (TC Camp)
API workshop: Introduction to APIs (TC Camp)
 
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer ToolsDevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
DevOps on AWS: Deep Dive on Continuous Delivery and the AWS Developer Tools
 
Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015Docker and containers - For Boston Docker Meetup Workshop in March 2015
Docker and containers - For Boston Docker Meetup Workshop in March 2015
 
A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)A guide to hiring a great developer to build your first app (redacted version)
A guide to hiring a great developer to build your first app (redacted version)
 

Mehr von Oracle Developers

Mehr von Oracle Developers (20)

Running Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud InfrastructureRunning Kubernetes Workloads on Oracle Cloud Infrastructure
Running Kubernetes Workloads on Oracle Cloud Infrastructure
 
Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019Apex atp customer_presentation_wwc march 2019
Apex atp customer_presentation_wwc march 2019
 
Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.Building Cloud Native Applications with Oracle Autonomous Database.
Building Cloud Native Applications with Oracle Autonomous Database.
 
Fn meetup by Sardar Jamal Arif
Fn meetup by Sardar Jamal ArifFn meetup by Sardar Jamal Arif
Fn meetup by Sardar Jamal Arif
 
Get ready for_an_autonomous_data_driven_future_ext
Get ready for_an_autonomous_data_driven_future_extGet ready for_an_autonomous_data_driven_future_ext
Get ready for_an_autonomous_data_driven_future_ext
 
Cloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish KapurCloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
Cloud Native Meetup Santa Clara 07-11-2019 by Manish Kapur
 
Container Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey BoxellContainer Native Development Tools - Talk by Mickey Boxell
Container Native Development Tools - Talk by Mickey Boxell
 
General Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajevGeneral Capabilities of GraalVM by Oleg Selajev @shelajev
General Capabilities of GraalVM by Oleg Selajev @shelajev
 
GraalVM Native Images by Oleg Selajev @shelajev
GraalVM Native Images by Oleg Selajev @shelajevGraalVM Native Images by Oleg Selajev @shelajev
GraalVM Native Images by Oleg Selajev @shelajev
 
Serverless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerServerless Patterns by Jesse Butler
Serverless Patterns by Jesse Butler
 
Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data Java Library for High Speed Streaming Data
Java Library for High Speed Streaming Data
 
Artificial Intelligence
Artificial IntelligenceArtificial Intelligence
Artificial Intelligence
 
Reactive Java Programming: A new Asynchronous Database Access API by Kuassi M...
Reactive Java Programming: A new Asynchronous Database Access API by Kuassi M...Reactive Java Programming: A new Asynchronous Database Access API by Kuassi M...
Reactive Java Programming: A new Asynchronous Database Access API by Kuassi M...
 
Managing containers on Oracle Cloud by Jamal Arif
Managing containers on Oracle Cloud by Jamal ArifManaging containers on Oracle Cloud by Jamal Arif
Managing containers on Oracle Cloud by Jamal Arif
 
North America November Meetups
North America November MeetupsNorth America November Meetups
North America November Meetups
 
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish AbramsGraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
GraphPipe - Blazingly Fast Machine Learning Inference by Vish Abrams
 
North America Meetups in September
North America Meetups in September North America Meetups in September
North America Meetups in September
 
Introduction to the Oracle Container Engine
Introduction to the Oracle Container EngineIntroduction to the Oracle Container Engine
Introduction to the Oracle Container Engine
 
Oracle Data Science Platform
Oracle Data Science PlatformOracle Data Science Platform
Oracle Data Science Platform
 
Persistent storage with containers By Kaslin Fields
Persistent storage with containers By Kaslin FieldsPersistent storage with containers By Kaslin Fields
Persistent storage with containers By Kaslin Fields
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Kürzlich hochgeladen (20)

Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Delivering Developer Tools at Scale

  • 1. Delivering Developer Tools at Scale Joe Levy (@jodoglevy) – Principal Technical Program Manager Mike Ross – Senior Software Engineer Oracle Bare Metal Cloud Services, Developer Experience
  • 2. Oracle Bare Metal Cloud Services • Infrastructure as a service (IaaS)  Compute (physical and virtual machines)  Block Storage  Virtual Networking  Identity  Load Balancing  Object Storage  Audit  Database • Built by ex-cloud folks • More info: https://cloud.oracle.com/en_US/bare- metal
  • 4. March 2015 Developer Experience: Support devs where they are (languages)
  • 5. Developer Experience: Support devs where they are (tools) https://www.linux.com/news/top-open-source-cloud-projects-2014
  • 6. Developer Experience (aka fill all the boxes) Compute Block Storage Virtual Networking Load Balancing Object Storage Audit Database Java SDK Python SDK Ruby SDK CLI HDFS Connector Chef Knife Plugin Terraform Provider
  • 7. Developer Experience: Progress to date Compute Block Storage Virtual Networking Load Balancing Object Storage Audit Database Java SDK In preview Python SDK N/A Ruby SDK In preview N/A CLI N/A In preview HDFS Connector N/A N/A N/A N/A N/A N/A Chef Knife Plugin N/A N/A N/A N/A Terraform Provider N/A
  • 8. Developer Experience: Progress to date Boxes: 7 dev tools X 7 services = 49 Team: 6 devs
  • 9. Developer Experience: The future Compute Block Storage Virtual Networking Load Balancing Object Storage Audit Database Java SDK In preview Python SDK N/A Ruby SDK In preview N/A CLI N/A In preview HDFS Connector N/A N/A N/A N/A N/A N/A Chef Knife Plugin N/A N/A N/A N/A Terraform Provider N/A Fortran SDK Logo SDK …
  • 10. Developer Experience: The future Boxes: N dev tools X 7 services = 7N Team: 6 devs
  • 11. Developer Experience: The future (for real) Compute Block Storage Virtual Networking Load Balancing Object Storage Audit Database Puppies as a service Haircuts as a service … Java SDK In preview Python SDK N/A Ruby SDK In preview N/A CLI N/A In preview HDFS Connector N/A N/A N/A N/A N/A N/A Chef Knife Plugin N/A N/A N/A N/A Terraform Provider N/A Fortran SDK Logo SDK …
  • 12. Developer Experience: The future (for real) Boxes: N dev tools X M services Team: 6 devs
  • 13. Developer Experience: The future (for real, for real) • Every service is actually a collection of many resources • More resources added to each service over time, all needing dev tools support • VCN service resources: • Cpe • CrossConnect • CrossConnectGroup • CrossConnectMapping • CrossConnectLocation • CrossConnectPortShapeSpeed • CrossConnectStatus • DhcpOption • Drg • DrgAttachment • EgressSecurityRule • FastConnectProviderService • IcmpOptions • IngressSecurityRule • InternetGateway • IpSecConnection • PortRange • RouteRule • RouteTable • SecurityList • Subnet • TcpOptions • TunnelConfig • TunnelStatus • UdpOptions • Vcn • VirtualCircuit • VirtualCircuitBandwithShape • Vnic • VnicAttachment
  • 14. Developer Experience: The future (for real, for real) Compute Block Storage Virtual Networking Load Balancing Object Storage Audit Database Puppies as a service Haircuts as a service … Java SDK In preview Python SDK N/A Ruby SDK In preview N/A CLI N/A In preview HDFS Connector N/A N/A N/A N/A N/A N/A Chef Knife Plugin N/A N/A N/A N/A Terraform Provider N/A Fortran SDK Logo SDK …
  • 15. Developer Experience: The future (for real, for real) Boxes: N dev tools X M services X Z features Team: 6 devs
  • 16. Developer Experience: The future (for real, for real, for real) • Pace of innovation rapidly increasing • 1 year ago org size: 300 • 1 year ago Developer Experience team size: 4 devs • Today org size: 850 (+185%) • Today Developer Experience team size: 6 devs (+50%) • 1 year from now org size: 1,500 (+80%) • 1 year from now Developer Experience team size: 9 devs (+50%) • We must maintain feature parity, despite team size not scaling at same pace as org at large
  • 17. Developer Experience: The future (for real, for real, for real) Boxes: N dev tools X M services X Z features X Y pace of innovation Team: 6 devs
  • 18. Developer Experience: The future (for real, for real, for real, for real) • Different release scopes: • Internal-only • Our services call each other • For their own infrastructure management • To enable some cross-service customer use cases • Some of the APIs / parameters they use are not meant for public consumption • Internal-preview • Let Oracle and special customers try features before we’re ready to publicize them • Public-preview • Let public customers try out new features before we certify them as production-ready • Public • Release a feature as production-ready, to the public
  • 19. Developer Experience: The future (for real, for real, for real, for real) Boxes: N dev tools X M services X Z features X Y pace of innovation X W release scopes Team: 6 devs
  • 20. The problem: How to keep up with work of this scale!? Boxes: N dev tools X M services X Z features X Y pace of innovation X W release scopes Team: 6 devs
  • 21. The solution • Swagger • Open Sourcing • API Consistency
  • 22. Swagger • https://swagger.io • Declaratively describe REST APIs in a machine-readable way • Manage your services’ interface specifications as you would your code • Open Source • Useful for:  Generating REST API documentation  Code reviewing REST APIs (to ensure good REST use, and consistency across BMCS APIs)  Automated & manual  Creating automated pipelines around service specifications  Service (scaffolding) generation  Client generation! (open source generators exist for many languages)  We generate:  Java SDK  Ruby SDK  Python SDK  CLI  Generated Terraform provider (work in progress)
  • 24. Results when generated • REST API docs • Java SDK • Python SDK • Ruby SDK • CLI: bmcs compute instance launch
  • 25. Demo Swagger and Bare Metal Cloud Services
  • 26. Swagger: Cons & Gotchas • Making modifications / polish to generated code • Keeping backwards compatibility as the Swagger spec changes • Contributions require understanding of metaprogramming and Swagger codegen, not just language the dev tool was “written” in • Non-language-related build tooling needed to contribute  Ex: Maven (Java) required to build Python SDK
  • 27. Open Sourcing • Get the developer community involved  Finding and fixing issues  Adding new features  Answering questions  Improving documentation • Create advocates for your products • Find potential hires who are passionate about the area you work in • Be a good developer citizen -- let others use your code as a basis for their projects / learning • Other useful parts of GitHub:  Archived releases  Subscribe-able release notification channel  Metrics • Open sourced so far:  Java SDK: https://github.com/oracle/bmcs-java-sdk  Python SDK: https://github.com/oracle/bmcs-python-sdk  Terraform Provider: https://github.com/oracle/terraform-provider-baremetal  Chef BMCS Knife Plugin: https://github.com/oracle/knife-bmcs  CLI (soon!)
  • 28. Open Sourcing: Cons & Gotchas • Syncing changes between GitHub repository and internal repository • Keeping private things, private • Accepting pull requests on generated code (since we codegen our code)
  • 29. API Consistency • Useful to the user • Can build higher-level functionality once per dev tool (instead of once per resource), since resources do things same way  Ex: pagination  BMCS list APIs return opc-next-page header, and take in that header’s value via query string: ?page=<token>  Ex: waiters  BMCS resources have a lifecycleState field to indicate creation / updating / deleting status • Reduces need to special case generated code  Ex: serializing OR filter semantics into an API call  /cars?make=subaru&make=toyota • Makes testing easier  When resources are managed similarly, test cases are similar too  Less investigation / writing of new code, more porting existing tests for a new resource type • Swagger makes API consistency much easier!  Swagger = service interface specifications as code  Diffs  Code review tools  Automated review
  • 30. One problem area left: Multiple release scopes N dev tools X M services X Z features X Y pace of innovation X W release scopes • Internal-only • Our services call each other • For their own infrastructure management • To enable some cross-service customer use cases • Some of the APIs / parameters they use are not meant for public consumption • Internal-preview • Let Oracle and special customers try features before we’re ready to publicize them • Public-preview • Let public customers try out new features before we certify them as production-ready • Public • Release a feature as production-ready, to the public
  • 31. Addressing the Problem: Multiple release scopes release preview some-feature-to-go-public internal some-never-public-feature Swagger spec branching
  • 32. Addressing the Problem: Multiple release scopes Swagger spec custom fields CreatePuppyDetails: properties: name: maxLength: 255 minLength: 1 type: string ownerId: maxLength: 255 minLength: 1 type: string isPottyTrained: type: boolean x-obmcs-preview-only: true dogType: type: string canBreatheFire: type: boolean x-obmcs-internal-only: true • x-obmcs-preview-only • Filtered out in public dev tool generation • Gets a preview disclaimer in its description in preview dev tools • x-obmcs-internal-only • Filtered out in preview and public dev tool generation
  • 33. Q/A P.S. – we’re hiring! Interested in this kind of thing? Email me at joe.levy@oracle.com or come find me afterwards

Hinweis der Redaktion

  1. Dev tools is a fragmented landscape!
  2. How we’ve done at filling all the boxes
  3. Joking about Fortran and Logo of course…
  4. Joking about puppies, haircuts as a service of course
  5. Each service is really many features, over time more and more
  6. Not worth showing the table, every box is now more of a 4D hypercube, not a square!
  7. Why not this smiley instead?