SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

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
 
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...Animesh Singh
 
DCEU 18: Docker Container Networking
DCEU 18: Docker Container NetworkingDCEU 18: Docker Container Networking
DCEU 18: Docker Container NetworkingDocker, Inc.
 
DevOps and BigData Analytics
DevOps and BigData Analytics DevOps and BigData Analytics
DevOps and BigData Analytics sbbabu
 
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 ChananaDocker, Inc.
 
introduction to micro services
introduction to micro servicesintroduction to micro services
introduction to micro servicesSpyros Lambrinidis
 
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 ContainersGiovanni Galloro
 
Advanced dev ops governance with terraform
Advanced dev ops governance with terraformAdvanced dev ops governance with terraform
Advanced dev ops governance with terraformJames Counts
 
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 Docker, Inc.
 
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 OpenStackAnimesh Singh
 
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 ApplicationsJelastic Multi-Cloud PaaS
 
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 RightScale
 
Java one kubernetes, jenkins and microservices
Java one   kubernetes, jenkins and microservicesJava one   kubernetes, jenkins and microservices
Java one kubernetes, jenkins and microservicesChristian Posta
 
Cloud-native Application Lifecycle Management
Cloud-native Application Lifecycle ManagementCloud-native Application Lifecycle Management
Cloud-native Application Lifecycle ManagementNeil Gehani
 
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...Docker, Inc.
 
Cloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStackCloud Foundry BOSH CPI for OpenStack
Cloud Foundry BOSH CPI for OpenStackAnimesh Singh
 
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 TopologyJelastic Multi-Cloud PaaS
 
Cloud Native Architectures for Devops
Cloud Native Architectures for DevopsCloud Native Architectures for Devops
Cloud Native Architectures for Devopscornelia davis
 
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 LearntAnimesh Singh
 

Tendances (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
 

Similaire à Delivering Tools at Scale for Developers on Bare Metal Cloud

DevOps for Databricks
DevOps for DatabricksDevOps for Databricks
DevOps for DatabricksDatabricks
 
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
 
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...Joe Levy
 
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 ...Alexandr Savchenko
 
"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...Fwdays
 
Containers, microservices and serverless for realists
Containers, microservices and serverless for realistsContainers, microservices and serverless for realists
Containers, microservices and serverless for realistsKarthik Gaekwad
 
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 DevPortalsAxway
 
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...Jean Vanderdonckt
 
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 TalksAmazon Web Services
 
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 SlidesDocker, Inc.
 
Docker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewDocker Birthday #3 Slides - Overview
Docker Birthday #3 Slides - OverviewChris Ciborowski
 
APIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadAPIs distribuidos con alta escalabilidad
APIs distribuidos con alta escalabilidadSoftware Guru
 
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 2015WaveMaker, Inc.
 
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 WakandaAlexandre Morgaut
 
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)Tom Johnson
 
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 ToolsAmazon Web Services
 
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 2015Jonas Rosland
 
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)Oursky
 

Similaire à Delivering Tools at Scale for Developers on Bare Metal Cloud (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)
 

Plus de Oracle Developers

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 InfrastructureOracle Developers
 
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 2019Oracle Developers
 
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.Oracle Developers
 
Fn meetup by Sardar Jamal Arif
Fn meetup by Sardar Jamal ArifFn meetup by Sardar Jamal Arif
Fn meetup by Sardar Jamal ArifOracle Developers
 
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_extOracle Developers
 
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 KapurOracle Developers
 
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 BoxellOracle Developers
 
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 @shelajevOracle Developers
 
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 @shelajevOracle Developers
 
Serverless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerServerless Patterns by Jesse Butler
Serverless Patterns by Jesse ButlerOracle Developers
 
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 Oracle Developers
 
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...Oracle Developers
 
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 ArifOracle Developers
 
North America November Meetups
North America November MeetupsNorth America November Meetups
North America November MeetupsOracle Developers
 
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 AbramsOracle Developers
 
North America Meetups in September
North America Meetups in September North America Meetups in September
North America Meetups in September Oracle Developers
 
Introduction to the Oracle Container Engine
Introduction to the Oracle Container EngineIntroduction to the Oracle Container Engine
Introduction to the Oracle Container EngineOracle Developers
 
Oracle Data Science Platform
Oracle Data Science PlatformOracle Data Science Platform
Oracle Data Science PlatformOracle Developers
 
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 FieldsOracle Developers
 

Plus de 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
 

Dernier

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 

Dernier (20)

Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 

Delivering Tools at Scale for Developers on Bare Metal Cloud

  • 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

Notes de l'éditeur

  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?