VMware’s Common SaaS Platform (CSP) is a brand new offering designed to enhance the productivity of developers and cloud providers by equipping them with a set of common and configurable capabilities (such as Identity, Telemetry, Account Management, Billing etc.), thus enabling them to focus on their core businesses.
But enough with the product pitch.
CSP is distributed to numerous cloud providers around the globe, used by developers and IT alike to empower their services and better answer the business need of their customers.
Please join us and witness how we take continuous delivery to the next step where sometimes the target environment is not on our control and still seamlessly manage and deliver our unique collection of capabilities, packaged as platform for ease of use, using the best and shiniest tools the frogs can provide.
CT Software Developers Meetup: Using Docker and Vagrant Within A GitHub Pull ...E. Camden Fisher
This was a talk given at the second CT Software Developers Meetup (http://www.meetup.com/CT-Software-Developers-Meetup/). It covers how NorthPage is using Docker and Vagrant with a home grown Preview tool to increase the efficiency of the GitHub Pull Request Workflow.
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupRudy De Busscher
Java Byte code is OS independent, which means that your application's startup takes more time than a native image. Using the Class Data Sharing functionality introduced in more recent versions of the JVM, you can prepare your application so that it will load very fast.
In this presentation, I'll go into more detail what Class Data Sharing is and the differences between the OpenJDK and OpenJ9 versions. With some Jakarta EE demo applications, you will see gains that you can achieve and reduce memory footprint a lot in Docker containers by sharing memory.
My @TriangleDevops talk from 2013-10-17. I covered the work that led us to @NetflixOSS (Acme Air), the work we did on the cloud prize (NetflixOSS on IBM SoftLayer/RightScale) and the @NetflixOSS platform (Karyon, Archaius, Eureka, Ribbon, Asgard, Hystrix, Turbine, Zuul, Servo, Edda, Ice, Denominator, Aminator, Janitor/Conformity/Chaos Monkeys of the Simian Army).
5 steps to take setting up a streamlined container pipelineMichel Schildmeijer
The document outlines 5 steps to set up a container pipeline:
1. Use versioning and container registries like GitHub, Docker, and private registries to manage code versions and container images.
2. Use an orchestration engine like Kubernetes to manage and orchestrate container processes. Common options are AWS EKS, GCP GKE, and Oracle OKE.
3. Provision the Kubernetes cluster using scripts or Terraform on cloud infrastructure like OCI.
4. Implement container pipelines using tools like Oracle Container Pipelines to automate building, testing, and deploying containers.
5. Use Helm to package and deploy Kubernetes applications and integrate it into the CI/CD pipeline
Kubernetes is much more than a runtime platform for Docker containers. Through its API not only can you create custom clients, but you can also extend Kubernetes. Those custom Controllers are called Operators and work with application-specific custom resource definitions.
Not only can you write those Kubernetes operators in Go, but you can also do this in Java. Within this talk, you will be guided through setting up and your first explorations of the Kubernetes API within a plain Java program. We explore the concepts of resource listeners, programmatic creation of deployments and services and how this can be used for your custom requirements.
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
Running applications on Kubernetes can provide a lot of benefits: more dev speed, lower ops costs, and a higher elasticity & resiliency in production. Kubernetes is the place to be for cloud native apps. But what to do if you’ve no shiny new cloud native apps but a whole bunch of JEE legacy systems? No chance to leverage the advantages of Kubernetes? Yes you can!
We’re facing the challenge of migrating hundreds of JEE legacy applications of a major German insurance company onto a Kubernetes cluster within one year. We're now close to the finish line and it worked pretty well so far.
The talk will be about the lessons we've learned - the best practices and pitfalls we've discovered along our way. We'll provide our answers to life, the universe and a cloud native journey like:
- What technical constraints of Kubernetes can be obstacles for applications and how to tackle these?
- How to architect a landscape of hundreds of containerized applications with their surrounding infrastructure like DBs MQs and IAM and heavy requirements on security?
- How to industrialize and govern the migration process?
- How to leverage the possibilities of a cloud native platform like Kubernetes without challenging the tight timeline?
A talk about the innovation of WebLogic Server, held at the Oracle Groundbreakers Tour APAC 2020 https://oracle-groundbreakers-apac-virtual-tour-2020.heysummit.com/speakers/michel-schildmeijer/
Docker Trusted Registry is a private registry for Docker images that provides key features like role-based access control, audit logs, and storage drivers. It has a modular architecture with components like registry servers, load balancers, and authentication servers. It can be deployed on any infrastructure and supports integration with directory services. Docker Trusted Registry comes in different editions for teams of various sizes and needs and pricing starts from free to $150 per month depending on the edition.
A brief description of a software architecture based on golang micro services.
The keynote was shown during the Golangit meetup @ Codemotion Rome 2015 event on March 27th 2015.
OSDC 2018 | Self Hosted bare Metal Kubernetes for SMEs by Thomas HoppeNETWAYS
1. The document discusses setting up a self-hosted bare metal Kubernetes cluster for small and medium enterprises (SMEs). It describes using CoreOS and Matchbox for provisioning nodes, and installing Kubernetes from scratch.
2. The architecture includes 4 server nodes with SSD and HDD storage located in a colocated data center. Networking uses VLANs, interface bonding, Flannel, and KubeDNS.
3. Monitoring and updates can be challenging with Kubernetes. The document recommends Prometheus for monitoring and discusses strategies for updating CoreOS, Kubernetes, and application versions.
Extreme performance with Oracle SOA Suite 12.2, Coherence and Exalogic can be achieved by configuring the platform to take advantage of the Exalogic infrastructure and optimizing SOA Suite and Coherence settings. Key aspects include using Coherence caching to minimize database transactions, configuring optimal WebLogic and JDBC settings for InfiniBand networking, and tuning SOA Suite dehydration and caching properties. This provides significant performance gains over a traditional architecture.
Introduction to GitHub Actions - How to easily automate and integrate with Gi...All Things Open
Presented by: Brent Laster
Presented at the All Things Open 2021
Raleigh, NC, USA
Raleigh Convention Center
Abstract: In this talk, open-source author, trainer and DevOps director Brent Laster will provide a solid introduction to GitHub Actions. You’ll learn about the core parts and pieces that make up an action, as well as the types of functionality and features they provide. You’ll also see how to combine them in simple workflows to accomplish basic tasks as well as how they can fit into a CI/CD environment.
ContainerDays NYC 2015: "Container Orchestration Compared: Kubernetes and Doc...DynamicInfraDays
Slides from Darren Shepherd's talk "Container Orchestration Compared: Kubernetes and Docker Compose, Machine & Swarm" at ContainerDays NYC 2015: http://dynamicinfradays.org/events/2015-nyc/programme.html#orchestration
Introduction into Docker Containers, the Oracle Platform and the Oracle (Nati...Lucas Jellema
Containers are increasingly popular to package, ship and run applications or microservices with their completely configured runtime environment including platform components such as application server and data store.Continuous Delivery and automated DevOps hinge on containers. Docker Containers are widely used and Oracle has long been involved in the Docker community.This session introduces the Docker Container images published by Oracle for flagship products such as Database, WebLogic, Linux and Java and demonstrates how these can be used in environment provisioning, automated delivery pipelines and microservices architectures. The session shows how containers are built, shipped and run based on these images and shows the Oracle Container Cloud, as well as Wercker Cloud (for automated build and delivery pipelines) and Oracle Cloud Engine - the managed Kubernetes cloud service..
Oracle has joined Kubernetes to allow applications and infrastructure to be deployed as containers across virtual machines and servers. Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. Oracle supports Kubernetes in various ways including certifying WebLogic and Docker, providing an Oracle Kubernetes Engine (OKE) service on Oracle Cloud Infrastructure (OCI), and developing tools like the WebLogic Kubernetes Operator.
Evénement Docker Paris: Anticipez les nouveaux business model et réduisez vos...Docker, Inc.
Au programme : la mise en place de plateformes agiles pour s’adapter aux nouveaux business models, l’optimisation des coûts IT dans le cadre de vos déploiements applicatifs, réussir la mise en oeuvre de Kubernetes, garantir la sécurité de vos applications tout au long de leur cycle de vie et bien plus encore.
Puzzle ITC Talk @Docker CH meetup CI CD_with_Openshift_0.2Amrita Prasad
This document discusses continuous delivery using OpenShift. It begins with an overview of OpenShift v3, including that it is a container platform as a service based on Docker and Kubernetes. It then covers key concepts in continuous integration and continuous delivery like automated database migrations and rolling updates. Finally, it provides an example of setting up a continuous integration/continuous delivery pipeline in OpenShift using Jenkins, including building and deploying a Java/Maven application through various stages.
1. The document discusses enhancements to Perforce's collaboration and continuous delivery capabilities, including improvements to code review workflows, project access control, and a RESTful API.
2. It addresses the need for familiar tools and workflows for developers, faster solutions, cross-team collaboration, and securing intellectual property across the development lifecycle.
3. Key capabilities highlighted include support for Git and P4 workflows, component discovery and reuse, treating Perforce as an artifact repository to support distributed build/test, and providing a single platform for the entire continuous delivery pipeline.
A Million ways of Deploying a Kubernetes ClusterJimmy Lu
Developers and operators tend to build and develop different ways to set up a Kubernetes cluster due to its complexity and openness. Most of the time, it's quite confusing for the newcomers to get started with the Kubernetes. In this short talk, I'll introduce you some popular ways of Kubernetes deployment and briefly talk about pros and cons of each solution.
DevOps Unleashed: Strategies that Speed DeploymentsForgeRock
Modern identity management platforms must be agile and secure enough to respond to demanding business timelines. As a result, many organizations are seeking cloud-based approaches to digital security and need offerings that are optimized for environments including Cloud Foundry, Azure, GCE, AWS and OpenStack. Your dev-ops strategy could be the difference between hitting or missing business-critical deadlines. In this webinar, learn how we are enhancing the ForgeRock Identity Platform to enable developers to use container-oriented technologies such as Kubernetes and Docker to accelerate deployment.
Devops architecture involves three main categories of infrastructure: IT infrastructure (version control, issue tracking, etc.), build infrastructure (build servers with access to source code), and test infrastructure (deployment, acceptance, and functional testing). Continuous integration involves automating the integration of code changes, while continuous delivery ensures code is always releasable but actual deployment is manual. Continuous deployment automates deployment so that any code passing tests is immediately deployed to production. The document discusses infrastructure hosting options, automation approaches, common CI/CD workflows, and provides examples of low and medium-cost devops tooling setups using open source and proprietary software.
Test-Driven-Development for Networking: Making CI Work for You by Colin McNam...DevOps4Networks
The document discusses how continuous integration (CI) and test-driven development (TDD) can benefit network engineers. It presents an overview of CI/TDD processes and concepts. A key point is that CI/TDD can increase quality, decrease risk, and increase development speed for network operations. The document proposes a maturity model to guide organizations in implementing CI/TDD practices for networking, starting from basic self-service builds and progressing to integrated testing and continuous deployment.
Topics of this presentation:
- Basics and best practices of developing single-page applications (SPA) and Web API Services on Microsoft .NET -
- Core with Docker and Linux.
- PowerShell Core automated builds.
- Markdown/PDF documentation.
- Documentation of public interfaces with Swagger/OAS/YAML.
- Automated testing of SPA on Protractor and testing the Web API on Postman/Newman.
This presentation by Sergii Fradkov (Consultant, Engineering), Andrii Zarharov (Lead Software Engineer, Consultant), Igor Magdich (Lead Test Engineer, Consultant) was delivered at GlobalLogic Kharkiv .NET TechTalk #1 on May 24, 2019.
Lino Telera presents on coding in containers. He discusses how containers can help address issues with traditional applications by allowing development and operations teams to work independently and enabling continuous integration and deployment. Containers isolate code and dependencies, making applications portable and scalable. Telera demonstrates building a simple Python web application, packaging it into a Docker container, and deploying it locally and to the cloud. He notes some challenges around stateful applications and databases in containers.
This document provides an overview of Docker and cloud native training presented by Brian Christner of 56K.Cloud. It includes an agenda for Docker labs, common IT struggles Docker can address, and 56K.Cloud's consulting and training services. It discusses concepts like containers, microservices, DevOps, infrastructure as code, and cloud migration. It also includes sections on Docker architecture, networking, volumes, logging, and monitoring tools. Case studies and examples are provided to demonstrate how Docker delivers speed, agility, and cost savings for application development.
Develop and deploy Kubernetes applications with Docker - IBM Index 2018Patrick Chanezon
Docker Desktop and Enterprise Edition now both include Kubernetes as an optional orchestration component. This talk will explain how to use Docker Desktop (Mac or Windows) to develop and debug a cloud native application, then how Docker Enterprise Edition helps you deploy it to Kubernetes in production.
Using a revision control system that tracks changes in source code with ways to manage your code in separate branches and tag revisions as releases is a bare minimum for developers.
This presentation highlights the importance of using a version control system Subversion.
Stay productive while slicing up the monolithMarkus Eisele
Microservices-based architectures are in vogue. Over the last couple of years, we have learned how thought leaders implement them, and it seems like every other week we hear about how containers and platform-as-a-service offerings make them ultimately happen.
Tech Talent Night Copenhagen 11/22/17
https://greenticket.dk/techtalentnightcph
stackconf 2020 | Replace your Docker based Containers with Cri-o Kata Contain...NETWAYS
They provide the workload isolation and security advantages of VMs. but at the same time maintain the speed of deployment and usability of containers.by using kata containers, instead of namespace, small virtual machines are created on the kernel and be strongly isolated. The technology of Kata Containers is based on KVM hypervisor. That’s why the level of isolation is equivalent to typical hypervisors. This session will focus on a live production phase when choosing kata instead of docker, and why they are preferable
Although containers provides software-level isolation of resources, the kernel needs to be shared. That’s why the isolation level in terms of security is not so high when compared with hypervisors.This learns to shift from Docker as the de facto standard to Kata containers and learn how to obtain higherl level of security
CMake, CTest, and CPack are open source build, test, and install tools. CMake generates native makefiles and workspaces that can be used to build a project across platforms. CTest can run tests and integrate with the CDash dashboard for continuous integration. CPack creates professional installers for software distribution.
OSDC 2018 | Three years running containers with Kubernetes in Production by T...NETWAYS
The talk gives a state of the art update of experiences with deploying applications in Kubernetes on scale. If in clouds or on premises, Kubernetes took over the leading role as a container operating system. The central paradigm of stateless containers connected to storage and services is the core of Kubernetes. However, it can be extended to distributed databases, Machine Learning, Windows VMs in Kubernetes. All these applications have been considered as edge cases a few years ago, however, are going more and more mainstream today.
Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early. In this post, Vedamanikandan explains continuous integration.
Stay productive while slicing up the monolithMarkus Eisele
The document discusses strategies for evolving monolithic applications into microservice architectures. It notes that modern software needs to meet increasing demands around release frequency, developer velocity, and infrastructure costs. While classical architectures based on monoliths and service-oriented architectures were effective, they no longer address today's challenges. The document then introduces microservices as an alternative, describing characteristics like independent deployability, language/data agnosticism, and process isolation. It acknowledges that while building individual microservices is straightforward, the difficult part is designing the overall system architecture and operational capabilities required to manage many interconnected microservices. Lagom is presented as one framework that can help implement reactive microservices on the JVM.
Docker & aPaaS: Enterprise Innovation and Trends for 2015WaveMaker, Inc.
WaveMaker Webinar: Cloud-based App Development and Docker: Trends to watch out for in 2015 - http://www.wavemaker.com/news/webinar-cloud-app-development-and-docker-trends/
CIOs, IT planners and developers at a growing number of organizations are taking advantage of the simplicity and productivity benefits of cloud application development. With Docker technology, cloud-based app development or aPaaS (Application Platform as a Service) is only becoming more disruptive − forcing organizations to rethink how they handle innovation, time-to-market pressures, and IT workloads.
Stay productive while slicing up the monolith Markus Eisele
DevNexus 2017
Microservices-based architectures are en-vogue. The last couple of
years we have learned how the thought-leaders implement them, and
every other week we have heard about how containers and
Platform-as-a-Service offerings make them ultimately happen.
The problem is that the developers are almost forgotten and left alone
with provisioning and continuous delivery systems, containers and
resource schedulers, and frameworks and patterns to help slice
existing monoliths. How can we get back in control and efficiently
develop them without having to provision complete production-like
environments locally, by hand?
All the new buzzwords, frameworks, and hyped tools have made us forget
ourselves—Java developers–and what it means to be productive and have
fun building systems. The problem that we set out to solve is: how can
we run real-world Microservices-based systems on our local development
machines, managing provisioning, and orchestration of potentially
hundreds of services directly from a single command line tool, without
sacrificing productivity enablers like hot code reloading and instant
turnaround time?
During this talk, you’ll experience first-hand how much fun it can be
to develop large-scale Microservices-based systems. You will learn a
lot about what it takes to fail fast and recover and truly understand
the power of a fully integrated Microservices development environment.
- ASP.NET 5 is the next generation of Microsoft's web framework that aims to address limitations of the current ASP.NET stack such as limited hosting possibilities and dependency on IIS.
- It features a modular architecture based on OWIN and Katana that decouples the application from the server and allows hosting on non-IIS platforms like Linux.
- Key improvements include cross-platform support, a more developer-friendly experience with features like no-compile debugging, and an emphasis on performance and light weight deployment through tools like the K command line.
Similar to Continuous Deployment into the Unknown with Artifactory, Bintray, Docker and Mesos (20)
Overview of ERP - Mechlin Technologies.pptxMitchell Marsh
This PowerPoint presentation provides a comprehensive overview of Enterprise Resource Planning (ERP) systems. It covers the fundamental concepts, benefits, and key functionalities of ERP software, illustrating how it integrates various business processes into a unified system. From finance and HR to supply chain and customer relationship management, ERP facilitates efficient data management and decision-making across organizations. Whether you're new to ERP or looking to deepen your understanding, this presentation offers valuable insights into leveraging ERP for business success.
A Comparative Analysis of Functional and Non-Functional Testing.pdfkalichargn70th171
A robust software testing strategy encompassing functional and non-functional testing is fundamental for development teams. These twin pillars are essential for ensuring the success of your applications. But why are they so critical?
Functional testing rigorously examines the application's processes against predefined requirements, ensuring they align seamlessly. Conversely, non-functional testing evaluates performance and reliability under load, enhancing the end-user experience.
A captivating AI chatbot PowerPoint presentation is made with a striking backdrop in order to attract a wider audience. Select this template featuring several AI chatbot visuals to boost audience engagement and spontaneity. With the aid of this multi-colored template, you may make a compelling presentation and get extra bonuses. To easily elucidate your ideas, choose a typeface with vibrant colors. You can include your data regarding utilizing the chatbot methodology to the remaining half of the template.
Responsibilities of Fleet Managers and How TrackoBit Can Assist.pdfTrackobit
What do fleet managers do? What are their duties, responsibilities, and challenges? And what makes a fleet manager effective and successful? This blog answers all these questions.
Explore the rapid development journey of TryBoxLang, completed in just 48 hours. This session delves into the innovative process behind creating TryBoxLang, a platform designed to showcase the capabilities of BoxLang by Ortus Solutions. Discover the challenges, strategies, and outcomes of this accelerated development effort, highlighting how TryBoxLang provides a practical introduction to BoxLang's features and benefits.
React and Next.js are complementary tools in web development. React, a JavaScript library, specializes in building user interfaces with its component-based architecture and efficient state management. Next.js extends React by providing server-side rendering, routing, and other utilities, making it ideal for building SEO-friendly, high-performance web applications.
Lots of bloggers are using Google AdSense now. It’s getting really popular. With AdSense, bloggers can make money by showing ads on their websites. Read this important article written by the experienced designers of the best website designing company in Delhi –
Seamless PostgreSQL to Snowflake Data Transfer in 8 Simple StepsEstuary Flow
Unlock the full potential of your data by effortlessly migrating from PostgreSQL to Snowflake, the leading cloud data warehouse. This comprehensive guide presents an easy-to-follow 8-step process using Estuary Flow, an open-source data operations platform designed to simplify data pipelines.
Discover how to seamlessly transfer your PostgreSQL data to Snowflake, leveraging Estuary Flow's intuitive interface and powerful real-time replication capabilities. Harness the power of both platforms to create a robust data ecosystem that drives business intelligence, analytics, and data-driven decision-making.
Key Takeaways:
1. Effortless Migration: Learn how to migrate your PostgreSQL data to Snowflake in 8 simple steps, even with limited technical expertise.
2. Real-Time Insights: Achieve near-instantaneous data syncing for up-to-the-minute analytics and reporting.
3. Cost-Effective Solution: Lower your total cost of ownership (TCO) with Estuary Flow's efficient and scalable architecture.
4. Seamless Integration: Combine the strengths of PostgreSQL's transactional power with Snowflake's cloud-native scalability and data warehousing features.
Don't miss out on this opportunity to unlock the full potential of your data. Read & Download this comprehensive guide now and embark on a seamless data journey from PostgreSQL to Snowflake with Estuary Flow!
Try it Free: https://dashboard.estuary.dev/register
2. Agenda
• What is the Common SaaS Platform (CSP)
• CI/CD processes for CSP
• Upgrading CSP
• Xenon - Distributed Control Plane (If we have the time)
2
3. Who are we ?
3
Kiril Nesenko
DevOps Lead
knesenko@vmware.com
Gilad Garon
Architect
ggaron@vmware.com , Twitter @giladgaron
4. VMware’s SaaS Transition
• VMware is developing many SaaS offerings
• Many services have the same common requirements (Billing, Identity, etc.)
• Like other good engineers, we like to reuse code wherever possible
• VMware’s Common SaaS Platform (CSP) is platform that internal SaaS
offerings are using to leverage existing internal components
4
5. Designing a SaaS platform
Design Principles
5
Cloud Agnostic
Highly Available
Scalable
Great Public APIs
Modular
In Practice
Infrastructure needs to support containers
Dynamic, Stateful and Distributed cluster
Tunable consistency helps to achieve availability & scalability
No internal APIs
Capabilities as libraries, Coupling is done with APIs
Ease of operability /
development
Single JAR, limited classpath dependencies set
6. Deployment Architecture. yep that’s it.
6
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Xenon Host
Jar
Container
Some Cloud Provider Inc.
14. Jenkins Job Builder
• Developed by OpenStack folks
• Configuration as code (yaml format)
• Easy to review changes
• Configuration de-duplication
• Include shell/groovy/python… scripts
• Test before deploying
• Easier to organize (per directory, per file)
• Serves as backup (easy to replicate to another jenkins)
14
21. Jenkins Jobs Types
• Gating – listens for patch-set-created events
• Build – for building purposes (gradle, docker etc)
• Listeners – listens for change-merged events on gerrit (orchestrators for the
pipelines)
21
22. Gating Jobs
• For each patch we run a gating job
• Each git project has its own gating job
• Build + test + post results to gerrit
22
23. Gating Jobs
23
Developer sends a patch Run build and tests(gating)
Post results to gerritMerge ?
Start build pipeline(listener)
27. Gerrit Failure
Gerrit hooks
• Executed on the server side
• Execute per event type
• Various checks: commit message style, trailing white
spaces, etc.
• Integrations with external systems: bugzilla, jira, etc.
27
30. Listener Jobs
• Executed on patch-merged event
• Orchestrating the build and delivery pipeline dynamically
• Orchestration done via the BuildFlow plugin (groovy)
• All listeners run the same code base
• On failure, user is notified on slack channel
30
37. Upgrading a Stateful platform
Goals:
• Minimal service interruptions
• Support schema changes
Challenges:
• Symmetrical cluster: Can’t refactor / add API paths
• State & Business Logic in the same tier: can’t separate schema upgrade from
BL changes
37
38. Upgrading a Stateful platform
Design:
• Work in cycles, get meaningful metrics per cycle
• Each cycle migrates and transforms state
• Use a Threshold to determine progress and cutoff point
• Smartly queue external traffic
• Reroute traffic to new cluster
38
40. Xenon – Distributed Control Plane
• A design pattern and runtime for scalable orchestration and management logic
• A runtime powering tiny REST services
• IO Pipeline integrates key building blocks within each service operation
• Production ready code with continuous integration tests, design documents
40
https://github.com/vmware/xenon
41. The Popular Way
Stand up N nodes for each of:
• Orchestration code & container (Spring Boot)
• Your HA persistency layer (Cassandra, Mongo)
• Your translation layer (ORM)
• Your arbitration/leader election (ZK, etcd, consul)
• Your UI server (node.js, tomcat, apache)
• Your cache layer (Redis, memcached)
• Your message bus, event broker
42. The Xenon Way
Stand up N nodes running Xenon services:
• Orchestration as stateless or stateful REST endpoints
• Persist, replicate state independently
• Manage concurrency with a single JVM and one thread per core across ALL
services
• Provide per operation owner selection (leader)
• Pub / Sub
• Stats
• UI
• Tracing
45. Decentralized Model
• Scalable to lots of nodes
– SWIM node discovery and maintenance
– Replication with Eventual OR Strong Consistency (choose!)
• Every node in a node group has the same core services
– Operational simplicity
46. Indexing/Queries
• Multi version, fully indexed, replicated document store
– Lucene!
• Query services with rich document query support modeled as tasks
– Real time or historical
• Collections are just queries
47. Programming Model
• Isolated, asynchronous components listening on URIs
• Each service instance represents a “living” document
– All side effects happen through REST actions on document
– Replication, consensus, notifications all leveraging symmetric model
• Stateless handlers are offered latest state and request body
• Developer declares requirements through Service options
– Replication with Strong (Eager) or Eventual consistency
– Scale out (Owner selection)
– Instrumentation
– Persistence (with deep indexing)
– And more …
Editor's Notes
Hi,
My name is Gilad and along here with is Kiril and we are a part of Vmware’s CPSBU or Cloud provider software business unit which a fancy way of saying the we build software for cloud providers.
Vmware is transitioning from a product based company to a services based company.
More and more teams are developing services, and need to interact with internal backoffice system such as identity and billing.
As development moved forward, we’ve noticed two things:
No one like to write integrations with billing or identity developers prefer to write services! Not integrations
Every service implements its integrations in its own way, and if different services wants to share this integration, most of the time it’s too domain specific
Like all good engineers we want to share code and not waste time on reinventing the wheel.
So, our main goal with CSP is to create a platform that will enable acceleration of internal services development and standardize the way a service interacts withthe various intergations
How do you design such a platform? When designing CSP we’ve decided on a set of design principles:1. Run on any infrastructure
2. High availability – self explanatory
3. Scalable – support N nodes
4. Public APIs dogfooding – we believe that a good API experience is only achievable when you consume your own APIs
5. Modular – add capabilities to the platform easily and be able to not use certain capabilities
6. Ease of operability / development – try to limit the tech zoo, and be able to run the platform with a single “click”
How does it looks in practice?
Our lowest common denominator is container support. If a provider can support containers, we can run on it.
Our platform is distributed and Stateful. we use tunable consistency in which most of our data is eventually consistent
In order to be scalable, we use gossip or to me more precise, SWIM protocol to be highly available
No internal APIs, if you don’t have them, you need to consume the public ones
Our capabilities or modules are just jars in the class path. Coupling between modules is done at the public API level
Our executable is a JAR, not a web / application server which is easy on development and operations. We limited our tech zoo to technologies that are aligned with our design principles.
Most of these principles are provided by Vmware’s own Xenon framework, a distributed control plane. More on xenon in a few seconds.
When we sticked to our guns with the design princples (and it wasn’t easy) we had a big win:
When deployed in production, CSP looks like this. (also in Dev) the number of nodes can scale. A lot.How did we achieve this? Vmware’s xenon framework
So how do we upgrade our customer envs?
Upgrading services to a new version is not a new concept, All of us are familiar with the popular strategies
Rolling upgrade inside an existing cluster
Blue/Green
Even hybrid solutions exists
We had two main goals when designing the upgrade mechanism, other than the oblivious one of actually upgrading the code base:
We must support schema transformation (renaming of fields) since adding or subtracting fields is free in Xenon.
The other goal is that the customer should not feel service interruptions
CSP has some challenges that needed to be addressed when we designed our upgrade mechanism:
CSP is stateful and the state and the business logic reside together in the same tier. This causes a challenge when considering a rolling upgrade.
You can’t seprate the schema changes and the business logic changes since they both reside in the same jar.And you you can’t modify API paths and or logic since our cluster is symmetrical.
So what did we do?
Since rolling upgrades are not easily achievable for now, we went with a green / blue strategy.
Our goal here is to migrate most of the data while the platform is live. Once the migration is almost done, we queue the incoming traffic,copy the remaining data, and then reroute the traffic to the new cluster.
In order to achieve that, we run in cycles. When a cycle is finished, we examine its telemetry and pass it to a threshold mechanism.
The threshold’s mechanism purpose it to determine whether it is safe to queue the external traffic and migrate the remaining data.If the last cycle took too long, we start a new cycle picking up from where the last cycle finished in terms of state. (the platform is still live so data is modified in runtime and we need to address these changes)
So, we migrate, check and repeat until we’ve crossed a certain threshold. Once the threshold is crossed we queue the traffic, perform a final
Cycle and reroute the traffic.Let’s see an example.
What is Xenon?
Xenon is a framework for writing small REST-based services. (Some people call them microservices.) The runtime is implemented in Java and acts as the host for the lightweight, asynchronous services. The programming model is language agnostic (does not rely on Java specific constructs) so implementations in other languages are encouraged. The services can run on a set of distributed nodes. Xenon provides replication, synchronization, ordering, and consistency for the state of the services. Because of the distributed nature of Xenon, the services scale well and highly available.
Xenon is a "batteries included" framework. Unlike some frameworks that provides just consistent data replication or just a microservice framework, Xenon provides both. Xenon services have REST-based APIs and are backed by a consistent, replicated document store.
When you build a modern service today you’ll probably need the following checklist:
Orchestration code and container – you’ll probably go with Spring Boot
HA Distributed DB – Cassandra / Mongo
And an ORM layer to go with it
A way to keep your cluster in sync – Zookeeper / ETCD
UI serving – Node.js / Apache
You’ll want to go Stateful at one point for performance / throughput issues – Redis
And some message bus / pipeline – Kafka?
In my opinion, this checklist looks good . All of the techs listed here work. Industry standard. But, you have to admit, it is a bit complex to manage and deploy.You have to deploy and bootstrap in a certain order, wait for things to get settled in…. You get it.
But, there’s another way:
Each Xenon runtime provides the following abilities:
An Orchestration and a restful layer
Persistency and replication layer
Total asyc processing with a single thread per core
Tunable consistency per service with leader election
Publish / Subscribe mechansims
And UI sevices, telemetry data, tracing and more….