OSGi modularity provides benefits like encapsulated modules, explicit dependencies, and loose coupling via services. However, adopting OSGi also incurs costs like learning a new runtime, designing bundles and services, and debugging class loading issues. Case studies found that for some projects like the vSphere Web Client and Croatian Telecom systems, the benefits of OSGi modularity outweighed the costs. However, for other simpler projects, the costs may not be worth it compared to the benefits.
Spring Dynamic Modules for OSGi by Example - Martin Lippert, Consultantmfrancis
?
This document outlines the agenda for a presentation on Spring Dynamic Modules. The presentation introduces the Spring framework and how it simplifies enterprise application development. It then discusses Spring Dynamic Modules (Spring DM), which allows Spring applications to be implemented on OSGi frameworks. Spring DM exports Spring beans as OSGi services and imports OSGi services as beans, without dependencies on OSGi APIs. Examples are provided of Spring DM's support for web applications. The presentation concludes with an outlook on future Spring DM developments and links for more information.
This slides covers the programmatic and declarative way to handle services in the OSGi container. Spring DM, Blueprint Services and Declared Services are presented in an overview.
The document provides an overview of WSO2 Developer Studio and its capabilities for developing enterprise applications. It discusses how Developer Studio allows developing, deploying, debugging and testing applications using services from the WSO2 Carbon platform. It then demonstrates through an example how to create a fault reporting system using Developer Studio to develop the various components like a data service, Axis2 service, ESB artifacts and a web application.
Spring cloud for microservices architectureIgor Khotin
?
I'm covering a new trend in distributed enterprise architecture C microservices. How the leading technology companies like Netflix and Amazon come to use that approach. How does it help them to scale their infrastructure. And how the newest set of tools in the Spring family would help you to apply those design principles in practice.
Spring has always been about patterns and Spring Cloud brings you implementation of several widespread ones for distributed apps.
And we'll try to show why DevOps should come in front of Microservices approach
This document provides a summary of the history of ASP.NET and the motivation for OWIN and Katana. It discusses how ASP.NET has evolved from ASP in 1996 to include MVC in 2009 and Web API in 2012. This led to a desire for frameworks that are not dependent on IIS and can be more modular. OWIN was created as an open standard to provide an abstraction between web servers and frameworks. Katana is Microsoft's implementation of OWIN. It presents an overview of how OWIN and Katana work using an environment dictionary and application delegate. The document concludes with a demo showing how to create a simple "Hello World" app using OWIN and Katana both with IIS and by self-host
With .NET Core, Microsoft has started a new era for developing multi-platform software. ASP.NET Core web framework is written from scratch, works on all major platforms including Window, Linux, MacOS - and even on RaspberryPI, and brings all-around extraordinary performance. After the short introduction, we'll look into what's new in versions 2.x and through demos analyze the basic templates for web and API applications, connecting with client-side frameworks as well as using the console and IDEs.
This document provides an introduction to WSO2 Developer Studio presented by Susankha Nirmala and Susinda Perera, software engineers at WSO2. It discusses the features of WSO2 Developer Studio and WSO2 Carbon including service hosting, message mediation, data access, authentication, composing business processes, and more. It demonstrates how to use Developer Studio to create projects like Axis2 services, composite applications, ESB artifacts, and BPEL processes and deploy them to WSO2 servers.
Grokking #9: Building a real-time and offline editing service with CouchbaseOliver N
?
In this talk, I would like to share how we build a system for LitiBook that can handle (1) real-time editing, (2) offline editing, (3) synchronizing between devices and (4) conflict between different editing sessions. There are not much applications out there can do all these above things. (Evernote does not resolve conflict. Hackpad, Trello and Asana do not support offline). So the challenge is really interesting.
Blog Post: http://WakeUpAndCode.com/aspnetcore-overview-nvcc2016
Recently known as ASP.NET 5, the all-new ASP.NET Core 1.0 is Microsoft's cross-platform lightweight approach to building robust applications for the modern Web. Get a high-level overview of what you need to know about ASP.NET Core from Shahed Chowdhuri, Sr. Technical Evangelist @ Microsoft.
This document discusses Angular, TypeScript, and Katana. It provides an overview of these technologies including what OWIN and Project Katana are, how to decouple the client and server, and demos of using Angular, TypeScript, and Reactive Extensions with ASP.NET. It also summarizes what Angular, TypeScript, and Reactive Extensions are and how they can be used together to build single page applications.
The document provides an overview of new features and enhancements in ADF 3.0, including a new JS-API that has been rewritten in Typescript, performance improvements, full SSO support, new process and task cloud components, extensibility features, and search enhancements like facet fields and a chip list component. Code examples are provided for common tasks like importing modules, listing apps and processes, and configuring SSO. Resources like documentation, repositories, and a Gitter channel are also listed for additional support.
This document discusses micro frontends, which extend the microservices architecture approach to frontend web development. It defines micro frontends as distinct slices of a web application that encompass the frontend, backend service, and database. The document then discusses why companies are using micro frontends and when they should be used. It provides examples of how companies like Walmart and Emtec Digital have implemented micro frontends. Finally, it covers popular ways to implement micro frontends such as using iframes, routing, web components, monorepos, and framework libraries.
The document discusses the architecture of Cloud Foundry, summarizing the roles and responsibilities of its main components:
- The Router handles external traffic and maintains routing tables to direct traffic to application instances.
- The Cloud Controller maintains systems control, handles user accounts and provisioning, and provides a REST API.
- Droplet Execution Agents (DEAs) are containers that build, start, and stop applications as instructed by managing the application lifecycle.
- Buildpacks compile source code, deploy applications, and configure runtime environments.
- Service Brokers provide interfaces to connect external services and manage service instances and bindings.
- Health Managers monitor application uptime by checking for mismatches between expected and
Refactor your Java EE application using Microservices and Containers - Arun G...Codemotion
?
Codemotion Rome 2015 - This talk will provide a quick introduction to Docker images (build time), containers (run time), and registry (distribution). It shows how to take an existing Java EE application and package it as a monolithic application as a single Docker image. The application will then be refactored in to multiple microservices and assembled together using orchestration. Unit and integration testing of such applications will be discussed and shown as well. Design patterns and anti-patterns that show how to create cluster of such applications will be demonstrated and discussed.
This document discusses Nuxeo WebEngine, which is a framework for building RESTful web applications on top of the Nuxeo platform. It embeds GlassFish v3 as an OSGi bundle to leverage Java EE features in standalone applications. WebEngine provides a content management platform, full Groovy scripting support, hot deployment of web modules, and a flexible template model. Examples demonstrate using JAX-RS, web modules, web objects, and templates with WebEngine. The document concludes by discussing next steps like rewriting the Nuxeo micro-kernel on top of HK2 and contributing extension points to HK2.
Graeme Rocher presented on upcoming versions of Grails. Grails 2.4 will include upgrades to Spring 4.0, Java 8 support, and the Asset Pipeline plugin. Grails 3.0 plans to embrace Gradle builds, abstract packaging, support non-servlet containers, and extend Grails' reach through profiles like Netty, batch, and Hadoop. It will also build on Spring Boot to enable embedded servers, runnable jars, and scripting/microservices. Key goals are reducing dependencies and bloat.
This document discusses Git strategies for teams. It outlines several branching strategies including "wing and a prayer", long-running branches, Git flow, and branch-per-feature. Git flow uses long-running branches with specific rules for features, hotfixes, bugs, and only merging develop branches to master once stable. Branch-per-feature creates a new branch for each feature or change and nothing is merged until production deployment. The document also discusses automation, team composition, environments, and selection criteria to consider when choosing a branching strategy.
Web components allow developers to create reusable custom elements with encapsulated styles and markup. They include APIs for custom elements, shadow DOM, and HTML templates. Web components solve challenges like maintaining a consistent and unified UI across frameworks. Common problems are addressed through standards like custom elements, shadow DOM, and templates. Web components are supported across major browsers and offer benefits like portability, isolated styles, and execution speed.
Victor introduces Swagger, an open-source framework for describing, producing, consuming, and visualizing RESTful APIs. Swagger allows API developers to describe the structure of APIs, including operations and models, using JSON or YAML files. It also generates documentation from these files and allows for testing API operations in interactive documents.
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Matt Raible
?
A lightning talk I gave at the Denver JUG meetup on December 11, 2019. This presentation shows how to build a secure microservices architecture with Spring Boot and Spring Cloud. It also shows you how you can generate the same architecture using JHipster. It's based on three blog posts I wrote:
* https://developer.okta.com/blog/2019/05/22/java-microservices-spring-boot-spring-cloud
* https://developer.okta.com/blog/2019/05/23/java-microservices-spring-cloud-config
* https://developer.okta.com/blog/2019/08/28/reactive-microservices-spring-cloud-gateway
This document outlines the modules and content covered in an ASP.NET MVC 5 course. The 10 modules cover an overview of MVC, models, controllers, views, security, routing, performance, testing, Web API integration. The agenda includes introductions to MVC architecture, comparisons to Web Forms, project structure, configuration, a demo app, best practices, and homework. Real app showcasing and references are also provided.
The document discusses using OSGi and Spring frameworks to modularize Cocoon applications into hot-deployable blocks. Key points:
1. Cocoon applications can be packaged into modular blocks containing components, libraries, and resources.
2. Spring-OSGi allows exporting blocks' beans as OSGi services and importing beans from other blocks.
3. Blocks are dynamically updatable and different versions of libraries can be used in isolation, enabling 24/7 deployment on customer systems.
Julien Dubois discusses the benefits of developing modular Java applications. Modularity improves quality, lowers complexity, and makes applications easier to reuse and maintain. Spring provides tools for creating layered applications with clear separation of concerns between presentation, service, and repository layers using annotations like @Controller, @Service, and @Repository. For true modularity with hot-deployable modules, OSGi is introduced, which Spring Dynamic Modules builds upon. dm Server leverages Spring, Tomcat, and OSGi to allow deployment of modular applications to virtualized and cloud environments at runtime for improved scalability and reduced costs.
Is OSGi Modularity Always Worth It? - Glyn Normingtonmfrancis
?
This document discusses the costs and benefits of using OSGi modularity. It presents case studies of converting the vert.x application framework and vSphere Web Client to use OSGi. While OSGi requires more upfront effort, it provides benefits like encapsulation, explicit dependencies, and dynamism. OSGi is generally worth adopting for long-lived or critical applications, when controlling dependencies is important, or to push higher layers towards modularity. The document concludes that OSGi was worthwhile for vert.x, vSphere Web Client, and Croatian Telecom based systems.
Vert.x is an asynchronous application development framework that allows applications to be written in multiple programming languages including JavaScript, Ruby, Python, Groovy, and Java. It provides a simple and scalable model for concurrency using asynchronous event loops and message passing. Applications can leverage existing Java libraries while avoiding common concurrency issues. A key feature is the distributed event bus that allows communication across server and client components. Vert.x uses a modular system to compose applications from reusable components.
Grokking #9: Building a real-time and offline editing service with CouchbaseOliver N
?
In this talk, I would like to share how we build a system for LitiBook that can handle (1) real-time editing, (2) offline editing, (3) synchronizing between devices and (4) conflict between different editing sessions. There are not much applications out there can do all these above things. (Evernote does not resolve conflict. Hackpad, Trello and Asana do not support offline). So the challenge is really interesting.
Blog Post: http://WakeUpAndCode.com/aspnetcore-overview-nvcc2016
Recently known as ASP.NET 5, the all-new ASP.NET Core 1.0 is Microsoft's cross-platform lightweight approach to building robust applications for the modern Web. Get a high-level overview of what you need to know about ASP.NET Core from Shahed Chowdhuri, Sr. Technical Evangelist @ Microsoft.
This document discusses Angular, TypeScript, and Katana. It provides an overview of these technologies including what OWIN and Project Katana are, how to decouple the client and server, and demos of using Angular, TypeScript, and Reactive Extensions with ASP.NET. It also summarizes what Angular, TypeScript, and Reactive Extensions are and how they can be used together to build single page applications.
The document provides an overview of new features and enhancements in ADF 3.0, including a new JS-API that has been rewritten in Typescript, performance improvements, full SSO support, new process and task cloud components, extensibility features, and search enhancements like facet fields and a chip list component. Code examples are provided for common tasks like importing modules, listing apps and processes, and configuring SSO. Resources like documentation, repositories, and a Gitter channel are also listed for additional support.
This document discusses micro frontends, which extend the microservices architecture approach to frontend web development. It defines micro frontends as distinct slices of a web application that encompass the frontend, backend service, and database. The document then discusses why companies are using micro frontends and when they should be used. It provides examples of how companies like Walmart and Emtec Digital have implemented micro frontends. Finally, it covers popular ways to implement micro frontends such as using iframes, routing, web components, monorepos, and framework libraries.
The document discusses the architecture of Cloud Foundry, summarizing the roles and responsibilities of its main components:
- The Router handles external traffic and maintains routing tables to direct traffic to application instances.
- The Cloud Controller maintains systems control, handles user accounts and provisioning, and provides a REST API.
- Droplet Execution Agents (DEAs) are containers that build, start, and stop applications as instructed by managing the application lifecycle.
- Buildpacks compile source code, deploy applications, and configure runtime environments.
- Service Brokers provide interfaces to connect external services and manage service instances and bindings.
- Health Managers monitor application uptime by checking for mismatches between expected and
Refactor your Java EE application using Microservices and Containers - Arun G...Codemotion
?
Codemotion Rome 2015 - This talk will provide a quick introduction to Docker images (build time), containers (run time), and registry (distribution). It shows how to take an existing Java EE application and package it as a monolithic application as a single Docker image. The application will then be refactored in to multiple microservices and assembled together using orchestration. Unit and integration testing of such applications will be discussed and shown as well. Design patterns and anti-patterns that show how to create cluster of such applications will be demonstrated and discussed.
This document discusses Nuxeo WebEngine, which is a framework for building RESTful web applications on top of the Nuxeo platform. It embeds GlassFish v3 as an OSGi bundle to leverage Java EE features in standalone applications. WebEngine provides a content management platform, full Groovy scripting support, hot deployment of web modules, and a flexible template model. Examples demonstrate using JAX-RS, web modules, web objects, and templates with WebEngine. The document concludes by discussing next steps like rewriting the Nuxeo micro-kernel on top of HK2 and contributing extension points to HK2.
Graeme Rocher presented on upcoming versions of Grails. Grails 2.4 will include upgrades to Spring 4.0, Java 8 support, and the Asset Pipeline plugin. Grails 3.0 plans to embrace Gradle builds, abstract packaging, support non-servlet containers, and extend Grails' reach through profiles like Netty, batch, and Hadoop. It will also build on Spring Boot to enable embedded servers, runnable jars, and scripting/microservices. Key goals are reducing dependencies and bloat.
This document discusses Git strategies for teams. It outlines several branching strategies including "wing and a prayer", long-running branches, Git flow, and branch-per-feature. Git flow uses long-running branches with specific rules for features, hotfixes, bugs, and only merging develop branches to master once stable. Branch-per-feature creates a new branch for each feature or change and nothing is merged until production deployment. The document also discusses automation, team composition, environments, and selection criteria to consider when choosing a branching strategy.
Web components allow developers to create reusable custom elements with encapsulated styles and markup. They include APIs for custom elements, shadow DOM, and HTML templates. Web components solve challenges like maintaining a consistent and unified UI across frameworks. Common problems are addressed through standards like custom elements, shadow DOM, and templates. Web components are supported across major browsers and offer benefits like portability, isolated styles, and execution speed.
Victor introduces Swagger, an open-source framework for describing, producing, consuming, and visualizing RESTful APIs. Swagger allows API developers to describe the structure of APIs, including operations and models, using JSON or YAML files. It also generates documentation from these files and allows for testing API operations in interactive documents.
Java Microservices with Spring Boot and Spring Cloud - Denver JUG 2019Matt Raible
?
A lightning talk I gave at the Denver JUG meetup on December 11, 2019. This presentation shows how to build a secure microservices architecture with Spring Boot and Spring Cloud. It also shows you how you can generate the same architecture using JHipster. It's based on three blog posts I wrote:
* https://developer.okta.com/blog/2019/05/22/java-microservices-spring-boot-spring-cloud
* https://developer.okta.com/blog/2019/05/23/java-microservices-spring-cloud-config
* https://developer.okta.com/blog/2019/08/28/reactive-microservices-spring-cloud-gateway
This document outlines the modules and content covered in an ASP.NET MVC 5 course. The 10 modules cover an overview of MVC, models, controllers, views, security, routing, performance, testing, Web API integration. The agenda includes introductions to MVC architecture, comparisons to Web Forms, project structure, configuration, a demo app, best practices, and homework. Real app showcasing and references are also provided.
The document discusses using OSGi and Spring frameworks to modularize Cocoon applications into hot-deployable blocks. Key points:
1. Cocoon applications can be packaged into modular blocks containing components, libraries, and resources.
2. Spring-OSGi allows exporting blocks' beans as OSGi services and importing beans from other blocks.
3. Blocks are dynamically updatable and different versions of libraries can be used in isolation, enabling 24/7 deployment on customer systems.
Julien Dubois discusses the benefits of developing modular Java applications. Modularity improves quality, lowers complexity, and makes applications easier to reuse and maintain. Spring provides tools for creating layered applications with clear separation of concerns between presentation, service, and repository layers using annotations like @Controller, @Service, and @Repository. For true modularity with hot-deployable modules, OSGi is introduced, which Spring Dynamic Modules builds upon. dm Server leverages Spring, Tomcat, and OSGi to allow deployment of modular applications to virtualized and cloud environments at runtime for improved scalability and reduced costs.
Is OSGi Modularity Always Worth It? - Glyn Normingtonmfrancis
?
This document discusses the costs and benefits of using OSGi modularity. It presents case studies of converting the vert.x application framework and vSphere Web Client to use OSGi. While OSGi requires more upfront effort, it provides benefits like encapsulation, explicit dependencies, and dynamism. OSGi is generally worth adopting for long-lived or critical applications, when controlling dependencies is important, or to push higher layers towards modularity. The document concludes that OSGi was worthwhile for vert.x, vSphere Web Client, and Croatian Telecom based systems.
Vert.x is an asynchronous application development framework that allows applications to be written in multiple programming languages including JavaScript, Ruby, Python, Groovy, and Java. It provides a simple and scalable model for concurrency using asynchronous event loops and message passing. Applications can leverage existing Java libraries while avoiding common concurrency issues. A key feature is the distributed event bus that allows communication across server and client components. Vert.x uses a modular system to compose applications from reusable components.
Vert.x is a general purpose application platform for building asynchronous and reactive applications. It uses an event-driven architecture with non-blocking APIs to build distributed applications that can be composed of components written in different programming languages. Vert.x provides tools like an event bus for communication between components, as well as HTTP/TCP clients and servers that allow building reactive web and microservices applications. It aims to simplify concurrency while leveraging existing Java libraries and allowing applications to scale across multiple machines.
Deploying windows containers with kubernetesBen Hall
?
The document discusses deploying Windows containers with Kubernetes. It covers building Windows containers, deploying containers on Kubernetes, and operating Kubernetes. Specifically, it shows how to:
- Build a Windows container with SQL Server using Docker
- Deploy a .NET Core app container to Kubernetes and expose it using a load balancer
- Scale the deployment to multiple replicas and observe traffic distribution
- Perform rolling updates to deploy new versions of the application
Virtualizing Apache Spark and Machine Learning with Justin MurrayDatabricks
?
This talk explains the reasons why virtualizing Spark, in-house or elsewhere, is a requirement in todays fast-moving and experimental world of data science and data engineering. Different teams want to spin up a Spark cluster on the fly to carry out some research and quickly answer business questions. They are not concerned with the availability of the server hardware C or with what any other team might be doing on it at the time. Virtualization provides the means of working within your own sandbox to try out the new query or Machine Learning algorithm. Deep performance test results will be shown that demonstrate that Spark and ML programs perform equally well on virtual machines just like native implementations do. An early introduction is given to the best practices you should adhere to when you do this.
Successfully Deliver and Operate OpenStack in Production with VMware VIOArraya Solutions
?
This document discusses VMware's approach to integrating their virtualization technologies with OpenStack. It emphasizes that VMware contributes to OpenStack projects while also competing to make VMware the best platform for running OpenStack. Specifically, it promotes using vSphere for compute (Nova), NSX for networking (Neutron), and vSAN for block storage (Cinder), arguing these provide the best features for reliability, ease-of-use, and management. It also describes how VMware technologies can help simplify and improve OpenStack operations through tools like vCenter and vCOps.
Best Practices for Running Kafka on Docker ContainersBlueData, Inc.
?
Docker containers provide an ideal foundation for running Kafka-as-a-Service on-premises or in the public cloud. However, using Docker containers in production environments for Big Data workloads using Kafka poses some challenges C including container management, scheduling, network configuration and security, and performance.
In this session at Kafka Summit in August 2017, Nanda Vijyaydev of BlueData shared lessons learned from implementing Kafka-as-a-Service with Docker containers.
https://kafka-summit.org/sessions/kafka-service-docker-containers
Microsoft AppFabric provides services for building and managing composite applications at scale, including workflows, caching, and hosting services. It allows sharing of data and workflows across machines. Windows Server AppFabric provides service and workflow management capabilities while Azure AppFabric focuses on access control and a service bus in the cloud. The presentation discussed architectural choices using these technologies like caching sessions, hosting services, and a real-world example architecture integrating caching, hosting, and messaging.
Big Gains With Little Virtual Machines Sumeet MehraJay Leone
?
VMware Lab Manager is a solution for managing virtual machine configurations for development and testing environments. It allows users to access a shared library of pre-configured virtual machine configurations. Copies of these configurations can be instantly provisioned using a fraction of the normal storage. Identical copies can run simultaneously on the lab network. An easy to use web portal provides access to the library and resources can be controlled through quotas and leases. Lab Manager helps consolidate infrastructure, reduce costs, and improve provisioning times for tasks like software development, testing, training and demos.
Supporting Hyper-V 3.0 on Apache CloudStackDonal Lafferty
?
The document discusses supporting Hyper-V 3.0 in CloudStack. It outlines the plugin architecture and progress made in developing an agent that uses WMI to control Hyper-V 3.0 via PowerShell scripts. It emphasizes reusing existing CloudStack code through the agent container and service contracts to maximize efficiency. Development is occurring on Windows using a XenServer surrogate for system VMs, with storage support delayed until a future refactor.
OSGi Cloud Ecosystems (OSGi Users Forum Germany)David Bosschaert
?
This document discusses OSGi Cloud Ecosystems, which provide a highly dynamic OSGi environment where cloud nodes/VMs, bundles, and services can dynamically come and go. In an OSGi Cloud Ecosystem, multiple OSGi frameworks run in separate VMs/cloud nodes and are bound together via an ecosystem-wide discovery mechanism. A provisioner orchestrates the ecosystem by remotely deploying bundles to frameworks based on application topology and runtime conditions. This allows building composite cloud applications where each entity runs on a different node and can scale dynamically.
This document provides an introduction to Java servlet technology. It discusses how servlets address limitations of CGI scripts by providing a portable way to generate dynamic web content from the server side using Java. Key topics covered include the servlet interface, lifecycle, and advantages over CGI such as improved performance and portability. Configuration and use of servlets within Eclipse and Tomcat are also explained.
VMware vSphere 4.0 provides infrastructure services including enhanced virtualization capabilities for compute, storage, and networking. It features increased scalability support, availability features like VMware HA and Fault Tolerance, and security improvements such as VMsafe and vShield Zones. The release delivers optimization and automation to reduce costs while improving operational efficiency.
Automating Software Development Life Cycle - A DevOps ApproachAkshaya Mahapatra
?
The document discusses DevOps and provides an overview of the key concepts. It describes how DevOps aims to bring development, operations, and business teams together through automating processes, continuous monitoring, and breaking down silos between teams. The document then covers various DevOps tools and technologies like version control systems, build tools, configuration management, virtualization, and continuous integration/deployment practices.
Trystakc.cn was announced in OpenStack Summit San Diego 2012(www.slideshare.net/openstack/trystack-introfinalpdf
).It was a Non-profit OpenStack community projects.
By Stackers, for stackers.Experience the latest OpenStack features.
Welcoming contributions and feedback, Join the fun !
Automating CloudStack with Puppet - David NalleyPuppet
?
This document discusses using Puppet to automate the deployment and configuration of virtual machines (VMs) in an Apache CloudStack infrastructure. It describes how Puppet can be used to deploy and configure CloudStack VMs according to their roles by parsing userdata passed to the VMs at launch. Custom Puppet facts can extract role information from the userdata to classify nodes and apply the appropriate configuration. The CloudStack and Puppet APIs can be combined to fully automate the provisioning and configuration of VMs from a clean state using Puppet manifests and resources.
Running eZ Platform on Kubernetes (presented by Bj?rn Dieding at eZ Conferenc...eZ Systems
?
Presentations given at eZ Conference 2016 in Paris by Bj?rn Dieding, CEO xrow GmbH.
After redesigning our IT infrastructure and all its processes, we came up with a container management software called Kubernetes which can be used in public and private clouds. Why do you need it to use Docker, what is the architecture and what does a continuous delivery pipeline look like?
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Felix Gessert
?
In this talk we share the lessons learned while building out the Baqend Cloud platform on AWS and Docker. Baqends AWS-hosted architecture consists of a caching CDN-Layer, global and local load balancing, a group of REST and Node.js servers and a database cluster with Redis and MongoDB. As customers have their own set of containerized REST and Node servers, we needed a cluster that on the one hand is horizontally scalable and on the other hand easily manageable and fault-tolerant from an operational perspective. Today there are at least 4 popular systems that claim to support this:
- Kubernetes
- Apache Mesos
- Docker Swarm
- AWS Elastic Container Service (ECS)
Thinking that ECS would certainly be the easiest option on AWS, we started building our cluster on it. We quickly came to realize that while ECS was astoundingly stable and easy to use there were inherent limitations that could not be worked around. An old Docker version, missing network isolation, no means of parameterizing task and forced memory constraints are major limitations of ECS we will talk about. Seeing the daunting operational overhead of running Kubernetes or Mesos in practice we turned to Dockers native clustering solution Swarm. We will present how Swarm works with both Docker and AWS and highlight the advantages and downsides compared to Amazons ECS.
OSGi Overview provides information on OSGi, its benefits, and how it works. Key points include:
- OSGi allows developing modular Java programs through bundles that declare dependencies. Each bundle dynamically loads classes.
- In Liferay, bundles become portlets, services, or extensions. The blade CLI helps create these.
- Portlets can be implemented as MVC portlets or use configuration and portlet provider templates.
- Services can be created with Service Builder or wrapped. OSGi services can also be registered.
- Liferay modules can be extended through fragments to customize JSPs, properties, add filters or events.
The OSGi Subsystems specification is now published. Subsystems provide a way of structuring large systems comprising many OSGi bundles - a "no brainer" for architects who want to build a modular system. But what are the practical considerations when using Subsystems? We'll look at the trade-offs involved and indicate some patterns and anti-patterns.
Eclipse Virgo was one of the technologies that provided input to the Subsystem specification. We'll use Virgo as a source of examples in discussing the practical trade-offs in the use of Subsystems.
This presentation was given at the OSGi DevCon at EclipseCon Europe 2012.
This document discusses modularity in Java and OSGi, focusing on multi-bundle modules and scoping mechanisms. It describes how modules are represented in Java through classes, packages, JAR files, and classloaders. In OSGi, bundles provide modularity, and the document explores approaches to multi-bundle modules like composite bundles, framework hooks, and region digraphs. It introduces subsystems as a proposed OSGi standard for defining and scoping multi-bundle modules.
Multi-bundle scoping techniques are essential for dividing large systems into loosely-coupled collections of bundles. If you are developing a large application with many bundles, you'll want to manage its complexity using a higher-level scoping mechanism than a single bundle.
For example, multi-bundle applications can be scoped to avoid unwanted interference between the applications. Another example is separating "kernel" bundles from applications supported by the kernel in order to increase the stability of the kernel, similarly to the way applications are separated from an operating system kernel.
This presentation, first given at EclipseCon Europe 2011, explores existing scoping mechanisms: metadata rewriting, composite bundles, framework hooks, and region digraphs.
It then covers scoping in the Subsystems draft OSGi standard for multi-bundle applications.
Taking the example of donating SpringSource dm Server to Eclipse.org as the Virgo project, this presentation considers the costs and (significant) benefits of such a donation. Improvements to Eclipse.org are suggested. Project leads should glean ideas to apply to their own projects. This file is licensed under the Eclipse Public License.
The document proposes the Eclipse Virgo project, which would create an open source OSGi server platform based on SpringSource dm Server v2.0. It outlines plans to donate the dm Server codebase and tooling to Eclipse projects under the EPL license, with an initial set of committers from the existing dm Server team. A roadmap is proposed to deliver an initial baseline release in 2Q2010 and join the Eclipse release train in 2011.
Virgo is a dynamic enterprise application platform based on SpringSource dm Server 2.0. It aims to provide a better OSGi platform for migrating Java EE applications and enabling modularity. Virgo solves problems like grouping bundles into manageable units and provisioning from repositories. It uses concepts like artifacts, plans, pipelines, repositories, and regions. The presenter invites attendees to get involved as casual users, expert users, contributors or committers by joining discussions, trying out the software, and contributing code.
5. OSGi Costs
Learning: OSGi, new runtime, new tools
Reusing 3rd party JARs
Designing appropriate bundles and services
De?ning and upgrading dependencies
Building bundles
Debugging resolution failures and class loading
Coping with dynamism
7. vert.x
? Asynchronous, event-driven web apps
? HTTP, WebSockets, sockjs
? Apps in Java, Groovy, JavaScript, Ruby
? Apps need not be thread safe
? JSON event bus
8. client
HTTP, WebSockets, sockjs
vert.x
server
class loader class loader
module verticle busmod
module
JSON JSON
event bus
9. Converting vert.x to OSGi
? Convert vert.x runtime to bundles
? Convert verticles to bundles
? (Convert busmods to bundles - similarly)
10. Convert Runtime to Bundles
? JARs:
? vert.x core
? Netty - network IO
? Jackson & Jackson Mapper - JSON
11. Approach
? Eye-ball existing OSGi manifests
? Generate manifests where necessary
? Use bnd or Virgo bundlor
? Create a manifest template
? Test resolution
14. vert.x Core Template
? vert.x name and version
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.vertx.core
Bundle-Name: vert.x Core
Bundle-Version: 1.0.0.final
Export-Template: *;version="1.0.0.final"
15. vert.x Core Template
? Package import template version ranges
? Netty: [3.4.2.Final, 4.0)
? Jackson: [1.9.4, 2.0)
? Other optional imports: 0
? 0 means [0, )
16. vert.x Core Template
? Package import version ranges
? Netty: [3.4.2.Final, 4.0) Where did these
? Jackson: [1.9.4, 2.0) come from?
? Other optional imports: 0
? 0 means [0, )
17. Version Ranges
? Lower bound
? What did you test?
? What old versions do you support?
? Upper bound
? Exporters versioning policy?
? How easy is it to change your bundle?
? Lifespan?
? Distribution?
20. Test Metadata
? Using Virgo, for simplicity
? Place dependencies in repository/usr
? Place vert.x core in pickup
? Start Virgo:
...
<DE0005I> Started bundle 'org.vertx.core' version '1.0.0.final'.
22. public class MyVerticle extends Verticle {
public void start() {
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
...
}
}
).listen(8080);
}
}
23. public class MyVerticle extends Verticle {
public void start() {
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
...
}
}
).listen(8080);
}
}
24. public class MyVerticle extends Verticle {
public void start() { redundant boilerplate
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
...
}
}
).listen(8080);
}
}
25. public class MyVerticle extends Verticle {
public void start() { redundant boilerplate
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
...
} not easily unit tested
}
).listen(8080);
}
}
26. public class MyVerticle extends Verticle {
public void start() { redundant boilerplate
vertx.createHttpServer().requestHandler(
new Handler<HttpServerRequest>() {
public void handle(HttpServerRequest req) {
...
} not easily unit tested
}
).listen(8080);
} baked-in con?guration
}
27. Modular Verticle
? Move boilerplate code to a support bundle
? Convert con?guration to declarative
metadata
? Use services for loose coupling
? whiteboard pattern
28. public class MyHandler implements
Handler<HttpServerRequest> {
public void handle(HttpServerRequest req) {
...
}
}
33. Costs
Deciding dependency version ranges
Reworking vert.x to improve encapsulation
Programming model changed
Shared dependencies must be thread safe
34. Costs
Deciding dependency version ranges
Reworking vert.x to improve encapsulation
Programming model changed
Shared dependencies must be thread safe
Conclusion: probably not worth it
36. vSphere Web Client
? OSGi based web server
? Virgo Server for Apache Tomcat
? Plugins allow users to extend the Web Client
? Custom data
? Custom relationships (for new/existing data)
37. browser
Flex UI
component
BlazeDS
Virgo
(vSphere
Web Client)
Data
Service
ESX
ESX
ESX
Server
Server
Server
vCenter Server
VM
VM VMware
VM
Inventory
Service
38. browser
Flex UI Custom Flex UI
component component
BlazeDS BlazeDS
Virgo
(vSphere
Web Client)
Data Custom Data
Service Service
ESX
ESX
ESX
Server
Server
Server
vCenter Server plugin zip
plugin zip
plugin zip
VM
VM VMware Remote Data
VM
Inventory Source
Service
44. Overview
? Virgo 3.0.3, EclipseLink, Atomikos,
ActiveMQ, Tomcat clustering, Hazelcast
? In production for more than a year
? last 7 months as a cluster
? Nearly 1 million user accounts
? 100s of web requests per second, peak
? Only one major outage, due to a Linux bug
49. OSGi Costs
Learning: OSGi, new runtime, new tools
Reusing 3rd party JARs
Designing appropriate bundles and services
De?ning and upgrading dependencies
Building bundles
Debugging resolution failures and class loading
Coping with dynamism
Reduced isolation in some cases
Further investment in tooling required
51. When is OSGi worth it?
?Lower layers bene?t most
?Control dependencies
?Hide internals
Lower layers push higher layers to OSGi
? Exposing OSGi to users
?Long-lived or critical applications
52. PRO TANTO QUID RETRIBUAMUS
For so much, what shall we give in return?
(wording from the edge of the Belfast ?1 coin)
53. Further Information
? Java Application Architecture by Kirk
Knoernschild
? http://www.osgi.org
? http://underlap.blogspot.co.uk/2012/06/osgi-
case-study-modular-vertx.html
? http://vertx.io/
? http://underlap.blogspot.co.uk/2012/10/
virgo-in-vsphere.html
? http://www.osgi.org/wiki/uploads/Links/
SemanticVersioning.pdf
54. ? Coins by Rob Redwood
Credits ? Bene?ts of using OSGi
http://www.osgi.org/Technology/WhyOSGi
? One Pound by Leo Reynolds