Javantura v4 - The power of cloud in professional services company - Ivan Krnić & Mladen Knežić
1. THE POWER OF THE CLOUD
IN A PROFESSIONAL
SERVICES COMPANY
Ivan Krnić, ikrnic@croz.net
Mladen Knežić, mknezic@croz.net
2. // Agenda
• Past vs. Present
• What is OpenShift
• Why OpenShift@CROZ
• OpenShift@CROZ
• Projects
• Projects delivery
• Challenges
• Q&A
3. // Past vs. Present
• Past
• Ticket oriented infrastructure
• Slow-moving, VM oriented
• Resource hungry
• Pets in Pets vs. Cattle
• You take care of it until the project ends
4. // Past vs. Present
• Present
• Self service
• Fast paced, automated
• Low resource overhead
• Cattle in Pets vs. Cattle
• If something goes down, replace it with another one
• Easy to manage instances
• What backup ?
5. // What is OpenShift
• lmgtfy:
OpenShift is a computer software product from Red Hat for container-based
software deployment and management. In concrete terms it is a supported distribution
of Kubernetes using Docker containers and DevOps tools for accelerated application
development.
source: Wikipedia
• So, it’s docker + something making a cloud (PaaS)
• Solving business problems:
• Fast deployments
• Reuse common components
7. // Why OpenShift@CROZ
• Let’s see what others are talking about
• Microservices, docker, cloud
• Continuous
• Integration ? We have done that for ages
• Delivery? Not so much
• It goes with DevOps
8. // OpenShift@CROZ
• 1 master, 2 nodes, setup&manage with Ansible
• Each quad CPU + 8GB RAM + 100 GB storage, RHEL/Centos
• NFS shared storage for persistent storage
• Usage stats:
• 4GB used, load ~0.5
• 5 customer projects (1 with production)
• 3 infrastructure projects (CI, logging, monitoring)
• 2 internal production app
• Replacing 1+ custom VMs with quad CPU, 8+ GB RAM, 80+ GB storage per
customer/project
9. // OpenShift@CROZ
• CI with Jenkins & OpenShift
• Offload Jenkins nodes to cloud (no need for special VMs)
• Different docker images for Jenkins nodes
• Maven & Java
• Android
• NPM etc.
• Persistent storage for caches (Maven repo etc.)
• GitLab test
• Playground for development setup
• Get people up to speed with GIT
10. // OpenShift@CROZ
• Logging
• OOB with OpenShift Ansible playbook
• ElasticSearch, Fluentd, Kibana
• Goes with permissions by projects
• Monitoring
• OOB with OpenShift Ansible playbook
• Hawkular, Heapster, Cassandra
• CPU, memory, network by POD
11. // Projects
• Classic: Spring, Java EE
• Modern Spring boot, Spring cloud, Angular, NodeJS, etc.
• DB persistent or ephemeral, mysql, postgres, etc
• Development and production enviroments as different projects
• Quota & limits for development projects
• Total quota
• Limit per pod, per container
• Min, max, default requested limit
• Liveness/readiness checks
• Rolling deployments
• A/B testing
12. // Projects delivery
• GIT source (triggering build with commit hook or URL)
• s2i
• Jenkinsfile pipeline
• Dockerfile
• Docker image from Nexus registry
• Jenkins CI build
• Triggers OpenShift deployment
13. // Challenges
• External docker registry -> use proper SSL certificate
• NFS storage -> don’t touch after first use (permissions)
• Persistent volumes – forbid dynamic provisioning, maybe
• Production env
• Project self-service – disable self-provisioning
• Set quota & limits on non-production projects & rough ones
• Learn permissions
• Read OpenShift v3 Scaling, Performance and Capacity Planning
• Check OpenShift Container Platform Reference Architecture Implementation Guides