Quarkus: Fast, Small, Innovative, and Native?
Link
rafael.benevides@oracle.com
@rafabene - bit.ly/quarkus
Rafael Benevides�
Cloud-Native Developer Advocate
rafael.benevides@oracle.com
@rafabene
Java Certifications:
SCJA / SCJP / SCWCD / SCBCD / SCEA
JBoss Certifications:
JBCD / JBCAA
Red Hat Certifications:
OpenShift / Containers / Ansible
Other Certifications:
SAP Netweaver / ITIL / IBM Software Quality
@rafabene - bit.ly/quarkus
3
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
@rafabene - bit.ly/quarkus
4
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
6
QUARKUS.IO
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
2007
KVM
2009
DEVOPS
@rafabene - bit.ly/quarkus
$18,000 Sun Sparc App Server Box (4 CPUs, 2GB of RAM)
+ $60,000 BEA Weblogic
+ $92,000 Sun Spark DB Server Box (8 CPUs)
+ $243,000 Oracle RDBMS
+ $50,000 Symantec Visual Café for 10 developers
--------------------------------------------------
$463,000 (capex) + ~$80,000 annual maint (opex)
Cost of a Java-based Web App circa 1999
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
— nutrecht July 2018
@rafabene - bit.ly/quarkus
Meet Quarkus
Supersonic java
@rafabene - bit.ly/quarkus
Quark any of a number of subatomic particles carrying a fractional electric charge
And "us"
(hardest problem in software)
WTF
is a
Quarkus ?
@rafabene - bit.ly/quarkus
Build a new Project
mvn io.quarkus:quarkus-maven-plugin:1.1.1.Final:create
@rafabene - bit.ly/quarkus
Quarkus Build process
@rafabene - bit.ly/quarkus
(all -> some -> no runtime reflection)
Optimizations benefit both GraalVM (SVM) and HotSpot
Framework Optimizations
@rafabene - bit.ly/quarkus
Build a native binary
mvn clean package -Pnative
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
GraalVM Limitations
@rafabene - bit.ly/quarkus
GraalVM Limitations
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
Build the Native Docker Image
mvn package -Pnative \
-Dquarkus.native.container-build=true
@rafabene - bit.ly/quarkus
Enough love to go around.
developer
@rafabene - bit.ly/quarkus
Imperative and reactive
Serverless
Live reload
Microservices
Fat jars and native executables
Optimized for JAX-RS & JPA (Hibernate) …
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
Connect to Database
quarkus.datasource.driver=com.mysql.cj.jdbc.Driver
quarkus.hibernate-orm.dialect=org.hibernate.dialect.MySQL5Dialect
quarkus.datasource.url=jdbc:mysql://localhost:3306/quarkus
quarkus.datasource.username = rafael
quarkus.datasource.password = 123456
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.database.generation=update
@rafabene - bit.ly/quarkus
Kubernetes Native
@rafabene - bit.ly/quarkus
Build the Image
eval $(minikube docker-env)
or
export DOCKER_HOST=tcp://192.168.100.100:2375
docker build -f src/main/docker/Dockerfile.native -t myquarkus .
@rafabene - bit.ly/quarkus
Instantiate the Image
kubectl run myquarkus-app --image=meu-projeto --port=8080 --image-pull-policy=IfNotPresent
kubectl expose deployment myquarkus-app --type=NodePort
@rafabene - bit.ly/quarkus
Access the application
curl $(minikube service myquarkus-app --url)/hello
Or
curl 192.168.100.100:$(kubectl get svc myquarkus-app -o=jsonpath='{.spec.ports[?(@.port==8080)].nodePort}')/hello
@rafabene - bit.ly/quarkus
Image:
quay.io/images/custservice:1.1.0
Replicas:
20
Labels:
customerservice=prod,ci_build=1213
ConfigMap:
cust_config
@rafabene - bit.ly/quarkus
Run them on Linux
Virtual
Physical
Private
Public
Oracle Linux
Node
Node
Node
Master
API Server
Dev
Ops
SCM�(Git/Svn)
CI/CD
Automation
Controllers
- Scheduler
- Replication
- Services
- Builds
- Routes
- Deployment
Kubernetes
Ingress Gateway
@rafabene - http://bit.ly/istio-kubernetes
10x smaller.
Up to 100x faster.
@rafabene - bit.ly/quarkus
@rafabene - bit.ly/quarkus
@RAFABENE
@rafabene - bit.ly/quarkus