SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
12 Factor
App
Best Practices for Java
Deployment
You might not like what I have to say
Modern Java
Deployment
.war
Traditional Java Deployment
.jar
Modern Java Deployment
Make JAR
Not WAR
2005 2015
WAR files JAR files
App Servers Microservices
Hot Deploy Continuous Deploy
Server in a closet Heroku/AWS/etc
Joe Kutner
@codefinger
JVM Platform Owner
12 Factor App
a methodology
Scalability
Maintainability
Portability
Immutable
Ephemeral
Declarative
Automated
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Use version
control
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor App
BAD
BAD
App #1 App #2
pom.xml
<project>
...
<modules>
<module>my-app</module>
<module>my-other-app</module>
</modules>
<project>
Submodules
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Never rely on implicit
existence of system-wide
packages
Explicitly declare
and isolate
dependencies
Don’t check
JAR files
into Git
JavaOne 2015: 12 Factor App
https://bintray.com/
Agent JARs
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-new-relic</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>com.newrelic.agent.java</includeGroupIds>
<includeArtifactIds>newrelic-agent</includeArtifactIds>
<stripVersion>true</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
build.gradle
task copyToLib(type: Copy) {
into "$buildDir/server"
from(configurations.compile) {
include "jetty-runner*"
}
}
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
• Resource handles to the database,
memcached, and other backing services
• Credentials to external services such as
Amazon S3 or Twitter
• Per-deploy values such as the canonical
hostname for the deploy
Anything that changes between
deployment environments:
(does not include things like conf/routes)
Configuration is…
Configuration should
be strictly separated
from code
Don’t check
passwords
into Git
JavaOne 2015: 12 Factor App
Configuration belongs
in the environment,
not in the application
applicationContext.xml
<bean class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
id=“dataSource">
<property name="driverClassName" value="org.postgresql.Driver"/>
<property name="url" value=“${JDBC_DATABASE_URL}"/>
// ...
application.conf
db.default.url=${DATABASE_URL}
Can you make your app open source at
any moment, without compromising
any credentials?
Litmus Test
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
JavaOne 2015: 12 Factor App
application.conf
db.default.url=${DATABASE_URL}
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
build, release, run
$ mvn clean install
$ sbt stage
$ ./gradlew build
build
$ heroku deploy:jar -j myapp.war
$ mvn heroku:deploy
$ docker push ...
release
$ java -jar myapp.war
$ build/install/myapp/bin/myapp.bat
run
$ mvn jetty:run
$ service tomcat start
$ cp myapp.war TOMCAT_HOME/webapps/
$ git push heroku master
build,
release,
& run
DemoTime
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Processes
should be
stateless
sticky sessions
😞
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
The twelve-factor app
is completely self-contained
The web app exports HTTP
as a service by binding to a port
.war
Traditional Deployment
.jar
Modern Deployment
Dropwizard
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Relax bro, I got this…
java.util.concurrent
RxJava
java.util.stream
Scale Up
Scale Out
web.1
web.2
worker.1 clock.1
Workload Diversity
NumberofProcesses
worker.2
worker.3
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Graceful shutdown
Quick startup
Resilience to failure
Servers are not pets
Servers are cattle
Application Servers
are pets
Application Servers
are not
disposable
Microservices are
cattle
Microservices are
disposable
Easy to replace
Decoupled from
external infrastructure
Easy to modify
Microservices
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
dev stage prod= =
dev
sqlite
stage
mysql
prod
postgres
=
≠
=
≠
dev
sqlite
postgres
stage
mysql
postgres
prod
postgres
postgres
=
≠
=
=
≠
=
dev
tomcat
jetty
stage
tomcat
jetty
prod
jboss
jetty
=
≠
=
=
≠
=
.jar
disposability
reproducibility
parity
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
Admin tasks
should be run
in isolated processes
$ heroku run bash
Running `bash` attached to terminal... up, run.1594
~ $
web1
web2
web3
admin
• Codebase
• Dependencies
• Config
• Backing services
• Build, release, run
• Processes
• Port Binding
• Concurrency
• Disposability
• Dev/Prod Parity
• Logs
• Admin Processes
12 Factor App
http://12factor.net
http://jkutner.github.io
Create a bintray.com account1.
set JDBC_DATABASE_URL=jdbc:postgres://…2.
Measure your app’s boot time3.
Click a Heroku button4.
What next?
https://github.com/britter/spring-boot-heroku-demo
Joe Kutner
@codefinger
JVM Platform Owner
(http://www.slideshare.net/jkutner/javaone-2015-12-factor-app)
http://bit.ly/1PSRxcm

Mais conteúdo relacionado

Destaque

12 factor app an introduction
12 factor app an introduction12 factor app an introduction
12 factor app an introductionKrishna-Kumar
 
The Twelve Factor App
The Twelve Factor AppThe Twelve Factor App
The Twelve Factor AppPablo Fullana
 
12 FACTOR APP WITH DOCKER
12 FACTOR APP WITH DOCKER12 FACTOR APP WITH DOCKER
12 FACTOR APP WITH DOCKERTREEPTIK
 
Capture the Cloud with Azure
Capture the Cloud with AzureCapture the Cloud with Azure
Capture the Cloud with AzureShahed Chowdhuri
 
Account Planning in Salesforce (January 21, 2016)
Account Planning in Salesforce (January 21, 2016)Account Planning in Salesforce (January 21, 2016)
Account Planning in Salesforce (January 21, 2016)Salesforce Partners
 
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...Neil Shannon
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureCloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureKen Cenerelli
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with AzureKris Wagner
 
Cloud Assessment and Readiness Tool (CART)
Cloud Assessment and Readiness Tool (CART)Cloud Assessment and Readiness Tool (CART)
Cloud Assessment and Readiness Tool (CART)HCL Technologies
 
Perform a Cloud Readiness Assessment for Your Own Company
Perform a Cloud Readiness Assessment for Your Own CompanyPerform a Cloud Readiness Assessment for Your Own Company
Perform a Cloud Readiness Assessment for Your Own CompanyAmazon Web Services
 
A cloud readiness assessment framework
A cloud readiness assessment frameworkA cloud readiness assessment framework
A cloud readiness assessment frameworkCarlo Colicchio
 
Cloud Journey- Partner Advantage
Cloud Journey- Partner AdvantageCloud Journey- Partner Advantage
Cloud Journey- Partner AdvantageSalesforce Partners
 
Google Cloud Platform Empowers TensorFlow and Machine Learning
Google Cloud Platform Empowers TensorFlow and Machine LearningGoogle Cloud Platform Empowers TensorFlow and Machine Learning
Google Cloud Platform Empowers TensorFlow and Machine LearningDataWorks Summit/Hadoop Summit
 
HA/DR options with SQL Server in Azure and hybrid
HA/DR options with SQL Server in Azure and hybridHA/DR options with SQL Server in Azure and hybrid
HA/DR options with SQL Server in Azure and hybridJames Serra
 
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...Kai Wähner
 
Beyond the Twelve-Factor App
Beyond the Twelve-Factor AppBeyond the Twelve-Factor App
Beyond the Twelve-Factor AppKazuya Takahashi
 
Building serverless apps with Node.js
Building serverless apps with Node.jsBuilding serverless apps with Node.js
Building serverless apps with Node.jsJulien SIMON
 
AWS Security Best Practices (March 2017)
AWS Security Best Practices (March 2017)AWS Security Best Practices (March 2017)
AWS Security Best Practices (March 2017)Julien SIMON
 
Google Cloud Dataflow meets TensorFlow
Google Cloud Dataflow meets TensorFlowGoogle Cloud Dataflow meets TensorFlow
Google Cloud Dataflow meets TensorFlowHayato Yoshikawa
 
La démarche Qualité des APP
La démarche Qualité des APP La démarche Qualité des APP
La démarche Qualité des APP FFFOD
 

Destaque (20)

12 factor app an introduction
12 factor app an introduction12 factor app an introduction
12 factor app an introduction
 
The Twelve Factor App
The Twelve Factor AppThe Twelve Factor App
The Twelve Factor App
 
12 FACTOR APP WITH DOCKER
12 FACTOR APP WITH DOCKER12 FACTOR APP WITH DOCKER
12 FACTOR APP WITH DOCKER
 
Capture the Cloud with Azure
Capture the Cloud with AzureCapture the Cloud with Azure
Capture the Cloud with Azure
 
Account Planning in Salesforce (January 21, 2016)
Account Planning in Salesforce (January 21, 2016)Account Planning in Salesforce (January 21, 2016)
Account Planning in Salesforce (January 21, 2016)
 
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
DevNexus 2017 - Building and Deploying 12 Factor Apps in Scala, Java, Ruby, a...
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with AzureCloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps with Azure
 
Cloud Powered Mobile Apps with Azure
Cloud Powered Mobile Apps  with AzureCloud Powered Mobile Apps  with Azure
Cloud Powered Mobile Apps with Azure
 
Cloud Assessment and Readiness Tool (CART)
Cloud Assessment and Readiness Tool (CART)Cloud Assessment and Readiness Tool (CART)
Cloud Assessment and Readiness Tool (CART)
 
Perform a Cloud Readiness Assessment for Your Own Company
Perform a Cloud Readiness Assessment for Your Own CompanyPerform a Cloud Readiness Assessment for Your Own Company
Perform a Cloud Readiness Assessment for Your Own Company
 
A cloud readiness assessment framework
A cloud readiness assessment frameworkA cloud readiness assessment framework
A cloud readiness assessment framework
 
Cloud Journey- Partner Advantage
Cloud Journey- Partner AdvantageCloud Journey- Partner Advantage
Cloud Journey- Partner Advantage
 
Google Cloud Platform Empowers TensorFlow and Machine Learning
Google Cloud Platform Empowers TensorFlow and Machine LearningGoogle Cloud Platform Empowers TensorFlow and Machine Learning
Google Cloud Platform Empowers TensorFlow and Machine Learning
 
HA/DR options with SQL Server in Azure and hybrid
HA/DR options with SQL Server in Azure and hybridHA/DR options with SQL Server in Azure and hybrid
HA/DR options with SQL Server in Azure and hybrid
 
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...
Cloud Native Middleware Microservices - Lessons Learned with Docker, Kubernet...
 
Beyond the Twelve-Factor App
Beyond the Twelve-Factor AppBeyond the Twelve-Factor App
Beyond the Twelve-Factor App
 
Building serverless apps with Node.js
Building serverless apps with Node.jsBuilding serverless apps with Node.js
Building serverless apps with Node.js
 
AWS Security Best Practices (March 2017)
AWS Security Best Practices (March 2017)AWS Security Best Practices (March 2017)
AWS Security Best Practices (March 2017)
 
Google Cloud Dataflow meets TensorFlow
Google Cloud Dataflow meets TensorFlowGoogle Cloud Dataflow meets TensorFlow
Google Cloud Dataflow meets TensorFlow
 
La démarche Qualité des APP
La démarche Qualité des APP La démarche Qualité des APP
La démarche Qualité des APP
 

Semelhante a JavaOne 2015: 12 Factor App

12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jrubyJoe Kutner
 
12 Factor Scala
12 Factor Scala12 Factor Scala
12 Factor ScalaJoe Kutner
 
Dropwizard and Groovy
Dropwizard and GroovyDropwizard and Groovy
Dropwizard and Groovytomaslin
 
GIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfGIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfRichHagarty
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with DockerMariaDB plc
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Dockervisual28
 
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
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesNoriaki Tatsumi
 
MariaDB on Docker
MariaDB on DockerMariaDB on Docker
MariaDB on DockerMariaDB plc
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...jaxconf
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuJoe Kutner
 
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Joonas Lehtinen
 
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarCreating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarSkytap Cloud
 
How to Contribute to Apache Usergrid
How to Contribute to Apache UsergridHow to Contribute to Apache Usergrid
How to Contribute to Apache UsergridDavid M. Johnson
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on BluemixRam Vennam
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodologylaeshin park
 

Semelhante a JavaOne 2015: 12 Factor App (20)

12-factor-jruby
12-factor-jruby12-factor-jruby
12-factor-jruby
 
12 Factor Scala
12 Factor Scala12 Factor Scala
12 Factor Scala
 
Dropwizard and Groovy
Dropwizard and GroovyDropwizard and Groovy
Dropwizard and Groovy
 
GIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdfGIDS_15FactorWorkshop.pdf
GIDS_15FactorWorkshop.pdf
 
jdays 2015
jdays 2015jdays 2015
jdays 2015
 
Twelve Factor App
Twelve Factor AppTwelve Factor App
Twelve Factor App
 
Getting Started with MariaDB with Docker
Getting Started with MariaDB with DockerGetting Started with MariaDB with Docker
Getting Started with MariaDB with Docker
 
Getting Started with Docker
Getting Started with DockerGetting Started with Docker
Getting Started with Docker
 
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
 
Operating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud MicroservicesOperating a High Velocity Large Organization with Spring Cloud Microservices
Operating a High Velocity Large Organization with Spring Cloud Microservices
 
MariaDB on Docker
MariaDB on DockerMariaDB on Docker
MariaDB on Docker
 
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
 
Creating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on HerokuCreating Scalable JVM/Java Apps on Heroku
Creating Scalable JVM/Java Apps on Heroku
 
12-Factor Apps
12-Factor Apps12-Factor Apps
12-Factor Apps
 
Ausoug glassfish perth
Ausoug glassfish perthAusoug glassfish perth
Ausoug glassfish perth
 
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
 
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft WebinarCreating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
Creating Complete Test Environments in the Cloud: Skytap & Parasoft Webinar
 
How to Contribute to Apache Usergrid
How to Contribute to Apache UsergridHow to Contribute to Apache Usergrid
How to Contribute to Apache Usergrid
 
Java Development on Bluemix
Java Development on BluemixJava Development on Bluemix
Java Development on Bluemix
 
12 Factor App Methodology
12 Factor App Methodology12 Factor App Methodology
12 Factor App Methodology
 

Mais de Joe Kutner

Fantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemFantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemJoe Kutner
 
2019 Texas Star Party
2019 Texas Star Party2019 Texas Star Party
2019 Texas Star PartyJoe Kutner
 
10 Mistakes Hackers Want You to Make
10 Mistakes Hackers Want You to Make10 Mistakes Hackers Want You to Make
10 Mistakes Hackers Want You to MakeJoe Kutner
 
NASA Space Apps Expo
NASA Space Apps ExpoNASA Space Apps Expo
NASA Space Apps ExpoJoe Kutner
 
NASA Space Apps
NASA Space AppsNASA Space Apps
NASA Space AppsJoe Kutner
 
Why Heroku Loves JHipster
Why Heroku Loves JHipsterWhy Heroku Loves JHipster
Why Heroku Loves JHipsterJoe Kutner
 
What the Struts?
What the Struts?What the Struts?
What the Struts?Joe Kutner
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyJoe Kutner
 
I can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and SpringI can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and SpringJoe Kutner
 
Deploying JHipster Microservices
Deploying JHipster MicroservicesDeploying JHipster Microservices
Deploying JHipster MicroservicesJoe Kutner
 
Measuring doubles with 8&quot; neaf copy
Measuring doubles with 8&quot; neaf copyMeasuring doubles with 8&quot; neaf copy
Measuring doubles with 8&quot; neaf copyJoe Kutner
 
4 JVM Web Frameworks
4 JVM Web Frameworks4 JVM Web Frameworks
4 JVM Web FrameworksJoe Kutner
 
Programming JVM Bytecode with Jitescript
Programming JVM Bytecode with JitescriptProgramming JVM Bytecode with Jitescript
Programming JVM Bytecode with JitescriptJoe Kutner
 
Programming JVM Bytecode
Programming JVM BytecodeProgramming JVM Bytecode
Programming JVM BytecodeJoe Kutner
 
DevLink: Healthy Programmer
DevLink: Healthy ProgrammerDevLink: Healthy Programmer
DevLink: Healthy ProgrammerJoe Kutner
 
Build a Bigger Brain
Build a Bigger BrainBuild a Bigger Brain
Build a Bigger BrainJoe Kutner
 
Deploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRubyDeploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRubyJoe Kutner
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web ApplicationsJoe Kutner
 
Deploying with JRuby
Deploying with JRubyDeploying with JRuby
Deploying with JRubyJoe Kutner
 

Mais de Joe Kutner (20)

Fantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find ThemFantastic Buildpacks and Where to Find Them
Fantastic Buildpacks and Where to Find Them
 
2019 Texas Star Party
2019 Texas Star Party2019 Texas Star Party
2019 Texas Star Party
 
10 Mistakes Hackers Want You to Make
10 Mistakes Hackers Want You to Make10 Mistakes Hackers Want You to Make
10 Mistakes Hackers Want You to Make
 
NASA Space Apps Expo
NASA Space Apps ExpoNASA Space Apps Expo
NASA Space Apps Expo
 
NASA Space Apps
NASA Space AppsNASA Space Apps
NASA Space Apps
 
Why Heroku Loves JHipster
Why Heroku Loves JHipsterWhy Heroku Loves JHipster
Why Heroku Loves JHipster
 
What the Struts?
What the Struts?What the Struts?
What the Struts?
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
I can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and SpringI can't believe it's not a queue: Kafka and Spring
I can't believe it's not a queue: Kafka and Spring
 
Deploying JHipster Microservices
Deploying JHipster MicroservicesDeploying JHipster Microservices
Deploying JHipster Microservices
 
Measuring doubles with 8&quot; neaf copy
Measuring doubles with 8&quot; neaf copyMeasuring doubles with 8&quot; neaf copy
Measuring doubles with 8&quot; neaf copy
 
4 JVM Web Frameworks
4 JVM Web Frameworks4 JVM Web Frameworks
4 JVM Web Frameworks
 
Java 20
Java 20Java 20
Java 20
 
Programming JVM Bytecode with Jitescript
Programming JVM Bytecode with JitescriptProgramming JVM Bytecode with Jitescript
Programming JVM Bytecode with Jitescript
 
Programming JVM Bytecode
Programming JVM BytecodeProgramming JVM Bytecode
Programming JVM Bytecode
 
DevLink: Healthy Programmer
DevLink: Healthy ProgrammerDevLink: Healthy Programmer
DevLink: Healthy Programmer
 
Build a Bigger Brain
Build a Bigger BrainBuild a Bigger Brain
Build a Bigger Brain
 
Deploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRubyDeploy, Scale and Sleep at Night with JRuby
Deploy, Scale and Sleep at Night with JRuby
 
Deploying JRuby Web Applications
Deploying JRuby Web ApplicationsDeploying JRuby Web Applications
Deploying JRuby Web Applications
 
Deploying with JRuby
Deploying with JRubyDeploying with JRuby
Deploying with JRuby
 

Último

Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Shubham Pant
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSlesteraporado16
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpressssuser166378
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilitiesalihassaah1994
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteMavein
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsRoxana Stingu
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024Jan Löffler
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...APNIC
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfmchristianalwyn
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdfShreedeep Rayamajhi
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxnaveenithkrishnan
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSedrianrheine
 

Último (12)

Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024Check out the Free Landing Page Hosting in 2024
Check out the Free Landing Page Hosting in 2024
 
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASSLESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
LESSON 10/ GROUP 10/ ST. THOMAS AQUINASS
 
Presentation2.pptx - JoyPress Wordpress
Presentation2.pptx -  JoyPress WordpressPresentation2.pptx -  JoyPress Wordpress
Presentation2.pptx - JoyPress Wordpress
 
Zero-day Vulnerabilities
Zero-day VulnerabilitiesZero-day Vulnerabilities
Zero-day Vulnerabilities
 
Computer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a WebsiteComputer 10 Lesson 8: Building a Website
Computer 10 Lesson 8: Building a Website
 
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced HorizonsVision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
Vision Forward: Tracing Image Search SEO From Its Roots To AI-Enhanced Horizons
 
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
WordPress by the numbers - Jan Loeffler, CTO WebPros, CloudFest 2024
 
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
Benefits of doing Internet peering and running an Internet Exchange (IX) pres...
 
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdfLESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
LESSON 5 GROUP 10 ST. THOMAS AQUINAS.pdf
 
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdfIntroduction to ICANN and Fellowship program  by Shreedeep Rayamajhi.pdf
Introduction to ICANN and Fellowship program by Shreedeep Rayamajhi.pdf
 
Bio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptxBio Medical Waste Management Guideliness 2023 ppt.pptx
Bio Medical Waste Management Guideliness 2023 ppt.pptx
 
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDSTYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
TYPES AND DEFINITION OF ONLINE CRIMES AND HAZARDS
 

JavaOne 2015: 12 Factor App