Slides of my talk at the September 2017 adaptTo() conference, Berlin. https://adapt.to/2017/en/schedule/get-the-cattle-out--let-s-build-a-large-scale-sling-rendering-pr.html
Video of that talk at https://www.youtube.com/watch?v=8bH9envZXik
GraphQL in Apache Sling - but isn't it the opposite of REST?Bertrand Delacretaz
Slides of my talk at ApacheCon @Home 2020 - code at https://github.com/apache/sling-org-apache-sling-graphql-core/ (look for the "sample website") - video recording at https://youtu.be/KTMObGt0YKU
The document discusses the Java Content Repository (JCR) and the Sling framework, which builds on JCR to enable scriptable web applications. It provides an overview of using Sling to develop a simple blog application with only 46 lines of code through JavaScript scripts and RESTful interfaces. The document also demonstrates more advanced features of Sling like content observation and generation of image thumbnails through an OSGi bundle.
In the last two years, we presented our experimental work that enables developers to precompile scripts to allow them to build Sling applications that are compiled ahead-of-time.
Our saga continues: since the last adaptTo() we made several improvements to make this idea a reality, including:
* Support for any Sling-supported Script Engine
* Support for precompiled units in the JSP Script Engine
* Support for both versioned and non-versioned resource types
* Support for servlet resolution based on the current resource and path, so that language-specific features like data-sly-include and sling:call work just as before
We actively worked on reducing the migration efforts required to take advantage of the Apache Sling Scripting Bundle Tracker, allowing it to work in existing projects.
In this talk, we will show our progress and demonstrate how you can adapt your existing projects with minimal effort. As an example, we have converted the Sling Starter application, including the Composum content browser, to perform rendering with precompiled scripts.
Finally, we will provide an outlook on how this paves the way for a future natively compiled Sling, that will help make applications more cloud-friendly.
For more details head over to https://adapt.to/2020/en/schedule/paving-the-way-to-a-native-sling.html.
Slides used during a Webinar on Feb 11, 2009 that introduces the Day CRX Version 1.4.1. CRX is a content application platform based on JSR-170 and a RESTful web framework. Learn more on www.day.com/crx
Repoinit: a mini-language for content repository initializationBertrand Delacretaz
This document discusses repoinit, an Apache Sling mini-language for initializing content repositories. Repoinit scripts are run at startup by SlingRepositoryInitializers to register the SlingRepository, set ACLs, and perform other initialization tasks. The talk covers the history and usage of repoinit, provides examples, and discusses best practices around parsing repoinit scripts using a parser generator rather than writing parsers by hand.
Slides of my "Sling and Serverless, Best Friends Forever?" presentation at adaptTo() 2019, Berlin. A video recording will be available later at https://adapt.to/2019/en/schedule/sling-and-serverless-best-friends-forever.html
Talk given at Devoxx Belgium 2018
Spring Boot is awesome. Docker is awesome. Together you can do great things. But, are you doing it the right way? We'll walk you through, in detail, the optimal way to structure Docker images for Spring Boot applications for iterative development. Structuring your Docker images correctly is really important for teams doing continuous integration and continuous delivery. Using Docker best practices, we'll show you the code and the technologies used to optimize Docker images for Spring Boot apps!
GraphQL in Apache Sling - but isn't it the opposite of REST?Bertrand Delacretaz
Slides of my talk at ApacheCon @Home 2020 - code at https://github.com/apache/sling-org-apache-sling-graphql-core/ (look for the "sample website") - video recording at https://youtu.be/KTMObGt0YKU
The document discusses the Java Content Repository (JCR) and the Sling framework, which builds on JCR to enable scriptable web applications. It provides an overview of using Sling to develop a simple blog application with only 46 lines of code through JavaScript scripts and RESTful interfaces. The document also demonstrates more advanced features of Sling like content observation and generation of image thumbnails through an OSGi bundle.
In the last two years, we presented our experimental work that enables developers to precompile scripts to allow them to build Sling applications that are compiled ahead-of-time.
Our saga continues: since the last adaptTo() we made several improvements to make this idea a reality, including:
* Support for any Sling-supported Script Engine
* Support for precompiled units in the JSP Script Engine
* Support for both versioned and non-versioned resource types
* Support for servlet resolution based on the current resource and path, so that language-specific features like data-sly-include and sling:call work just as before
We actively worked on reducing the migration efforts required to take advantage of the Apache Sling Scripting Bundle Tracker, allowing it to work in existing projects.
In this talk, we will show our progress and demonstrate how you can adapt your existing projects with minimal effort. As an example, we have converted the Sling Starter application, including the Composum content browser, to perform rendering with precompiled scripts.
Finally, we will provide an outlook on how this paves the way for a future natively compiled Sling, that will help make applications more cloud-friendly.
For more details head over to https://adapt.to/2020/en/schedule/paving-the-way-to-a-native-sling.html.
Slides used during a Webinar on Feb 11, 2009 that introduces the Day CRX Version 1.4.1. CRX is a content application platform based on JSR-170 and a RESTful web framework. Learn more on www.day.com/crx
Repoinit: a mini-language for content repository initializationBertrand Delacretaz
This document discusses repoinit, an Apache Sling mini-language for initializing content repositories. Repoinit scripts are run at startup by SlingRepositoryInitializers to register the SlingRepository, set ACLs, and perform other initialization tasks. The talk covers the history and usage of repoinit, provides examples, and discusses best practices around parsing repoinit scripts using a parser generator rather than writing parsers by hand.
Slides of my "Sling and Serverless, Best Friends Forever?" presentation at adaptTo() 2019, Berlin. A video recording will be available later at https://adapt.to/2019/en/schedule/sling-and-serverless-best-friends-forever.html
Talk given at Devoxx Belgium 2018
Spring Boot is awesome. Docker is awesome. Together you can do great things. But, are you doing it the right way? We'll walk you through, in detail, the optimal way to structure Docker images for Spring Boot applications for iterative development. Structuring your Docker images correctly is really important for teams doing continuous integration and continuous delivery. Using Docker best practices, we'll show you the code and the technologies used to optimize Docker images for Spring Boot apps!
The document discusses different approaches to packaging Java applications including fat JARs, thin JARs, skinny JARs, and hollow JARs. It analyzes the packaging of sample "Hello World" applications using Spring Boot, WildFly Swarm, Eclipse Vert.x, and Dropwizard. Fat JARs package the entire application and dependencies together but can become very large, while thinner approaches package dependencies externally to reduce size and improve redeployment speeds for container-based applications.
DCSF19 Tips and Tricks of the Docker Captains Docker, Inc.
Brandon Mitchell, BoxBoat
Docker Captain Brandon Mitchell will help you accelerate your adoption of Docker containers by delivering tips and tricks on getting the most out of Docker. Topics include managing disk usage, preventing subnet collisions, debugging container networking, understanding image layers, getting more value out of the default volume driver, and solving the UID/GID permission issues with volumes in a way that allows images to be portable from any developer laptop and to production.
Il s’agit dans un premier temps de présenter Docker, ses cas d’usage et quelques bonnes pratiques d’utilisation.
Le but est de présenter Docker, son mode de fonctionnement et son écosystème.
Ce qu’il peut apporter et les pièges à éviter
https://github.com/kanedafromparis/prez-fabric8-dmp
Continuous Integration: SaaS vs Jenkins in CloudIdeato
Dopo la diffusione del Cloud Computing e di Docker, è ancora preferibile
adottare i classici SaaS di Continuous Integration rispetto ad un
sistema Jenkins in cloud?
L'intervento ha l’obiettivo di mostrare un caso d'uso applicato in
Ideato di migrazione da un SaaS quale Travis ad un sistema Jenkins in
cloud, sfruttando funzionalità di on demand tramite il cloud di Amazon
Web Services e di containerizzazione tramite Docker.
Tenendo in considerazione gli aspetti tecnici legati all’implementazione
e quelli che potrebbero impattare sul fronte economico come la mancanza
di automatizzazione e i tempi di setup, verranno mostrati pregi e
difetti di questo sistema e come può essere applicato ad una serie di
progetti. Infine verranno elencati una serie di prodotti recentemente
rilasciati e in grado di far evolvere ulteriormente l'attuale sistema.
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
Brandon Mitchell - Solutions Architect, BoxBoat
Docker Captain Brandon Mitchell will help you accelerate your adoption of Docker containers by delivering tips and tricks on getting the most out of Docker. Topics include managing disk usage, preventing subnet collisions, debugging container networking, understanding image layers, getting more value out of the default volume driver, and solving the UID/GID permission issues with volumes in a way that allows images to be portable from any developer laptop and to production.
This document discusses Selinko's use of Docker in their development, testing, and production environments. Some key points:
- Selinko is a Belgian company that provides secure IoT platforms and track and trace microchips.
- They use Docker for its portability, reproducibility, scalability, and other benefits aligned with the 12 factor app principles.
- In development, they use Docker Machine and Docker Compose. In testing, Jenkins. In production, CoreOS and systemd unit files to run Docker containers.
- They've learned best practices like avoiding running as root, minimizing layers, dealing with images sizes being virtual, and using Tini to avoid signals and zombies in containers.
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
In this tutorial we will go over setting up a standard LEMP stack for development use and learn how to modify it to mimic your production/pre-production environments as closely as possible. We will go over how to switch from Nginx to Apache, upgrade PHP versions and introduce additional storage engines such as Redis to the equation. We'll also step through how to run both unit and acceptance suites using headless Selenium images in the stack. Leave here fully confident in knowing that whatever environment you get thrown into, you can replicate it and work in it comfortably.
Streamline your development environment with dockerGiacomo Bagnoli
These days applications are getting more and more complex. It's becoming quite
difficult to keep track of all the different components an application needs in order to
function (a database, a message queueing system, a web server, a document
store, a search engine, you name it.). How many times we heard 'it worked on my
machine'?. In this talk we are going to explore Docker, what it is, how it works
and how much it can benefit in keeping the development environment consistent.
We are going to talk about Dockerfiles, best practices, tools like fig and vagrant,
and finally show an example of how it applies to a ruby on rails
application.
Running Docker in Development & Production (DevSum 2015)Ben Hall
This document provides an overview of Docker containers and how to use Docker for development and production environments. It discusses Docker concepts like images, containers, and Dockerfiles. It also demonstrates how to build images, run containers, link containers, manage ports, and use Docker Compose. The document shows how Docker can be used to develop applications using technologies like ASP.NET, Node.js, and Go. It also covers testing, deploying to production, and optimizing containers for production.
Running Docker in Development & Production (#ndcoslo 2015)Ben Hall
The document discusses running Docker in development and production. It covers:
- Using Docker containers to run individual services like Elasticsearch or web applications
- Creating Dockerfiles to build custom images
- Linking containers together and using environment variables for service discovery
- Scaling with Docker Compose, load balancing with Nginx, and service discovery with Consul
- Clustering containers together using Docker Swarm for high availability
Thanks to tools like vagrant, puppet/chef, and Platform as a Service services like Heroku, developers are extremely used to being able to spin up a development environment that is the same every time. What if we could go a step further and make sure our development environment is not only using the same software, but 100% configured and set up like production. Docker will let us do that, and so much more. We'll look at what Docker is, why you should look into using it, and all of the features that developers can take advantage of.
What is DocuOps. How does Asciidoctor contribute? How to add it to your Maven & Gradle build. Tying all of the tech documentation together in a single project from commit to publish.
The document discusses building a lightweight Docker container for Perl by starting with a minimal base image like BusyBox, copying just the Perl installation and necessary shared libraries into the container, and setting Perl as the default command to avoid including unnecessary dependencies and tools from a full Linux distribution. It provides examples of Dockerfiles to build optimized Perl containers from Gentoo and by directly importing a tarball for minimal size and easy distribution.
Docker can be used as an everyday development tool. It allows building, shipping and running applications securely by using containers. Containers allow encapsulating applications from the host machine and provide resource isolation using features like cgroups and namespaces. The key Docker concepts include images, containers, volumes, and the Docker engine. Docker Compose can be used to define and run multi-container Docker applications using a YAML file.
- The document discusses Docker, a tool that allows users to package applications into standardized units called containers for development, shipping and running applications.
- It provides an overview of Docker concepts like images, containers, the Dockerfile and Docker Hub registry. It also includes examples of Docker commands and a sample Dockerfile.
- The document encourages readers to use Docker for benefits like continuous integration/delivery, distributed applications and easy application deployment in a platform-as-a-service model.
Hands on Docker - Launch your own LEMP or LAMP stackDana Luther
In this tutorial we will go over setting up a standard LEMP stack for development use and learn how to modify it to mimic your production/pre-production environments as closely as possible. We will go over how to switch from Nginx to Apache, upgrade PHP versions and introduce additional storage engines such as Redis to the equation. We’ll also step through how to run both unit and acceptance suites using headless Selenium images in the stack. Leave here fully confident in knowing that whatever environment you get thrown into, you can replicate it and work in it comfortably.
Cloud hybridation leveraging on Docker 1.12Ludovic Piot
Since many apps are not about just a single container, this talk discusses the ability and benefits of creating an hybrid Docker cluster capacity leveraging on Linux+Windows OS and x86+ARM architectures.
Moreover, the Docker nodes composing this cloud will be hosted across several providers (local DC, cloud vendors such as Azure or AWS), in order to face various scenarios (cloud migration, elasticity…).
Organizations need to gain insight and knowledge from a growing number of Internet of Things (IoT), APIs, clickstreams, unstructured and log data sources. However, organizations are also often limited by legacy data warehouses and ETL processes that were designed for transactional data. In this session, we introduce key ETL features of AWS Glue, cover common use cases ranging from scheduled nightly data warehouse loads to near real-time, event-driven ETL flows for your data lake. We discuss how to build scalable, efficient, and serverless ETL pipelines using AWS Glue. Additionally, Merck will share how they built an end-to-end ETL pipeline for their application release management system, and launched it in production in less than a week using AWS Glue.
Slides of our talk at adaptTo 2016, Chetan Mehrotra and myself (https://adapt.to/2016/en/schedule/let_s-run-the-whole-web-on-apache-sling-and-oak-.html).
The code is at https://github.com/bdelacretaz/sling-adaptto-2016 and uses Docker to build a dynamic cluster of Apache Sling instances.
The document discusses different approaches to packaging Java applications including fat JARs, thin JARs, skinny JARs, and hollow JARs. It analyzes the packaging of sample "Hello World" applications using Spring Boot, WildFly Swarm, Eclipse Vert.x, and Dropwizard. Fat JARs package the entire application and dependencies together but can become very large, while thinner approaches package dependencies externally to reduce size and improve redeployment speeds for container-based applications.
DCSF19 Tips and Tricks of the Docker Captains Docker, Inc.
Brandon Mitchell, BoxBoat
Docker Captain Brandon Mitchell will help you accelerate your adoption of Docker containers by delivering tips and tricks on getting the most out of Docker. Topics include managing disk usage, preventing subnet collisions, debugging container networking, understanding image layers, getting more value out of the default volume driver, and solving the UID/GID permission issues with volumes in a way that allows images to be portable from any developer laptop and to production.
Il s’agit dans un premier temps de présenter Docker, ses cas d’usage et quelques bonnes pratiques d’utilisation.
Le but est de présenter Docker, son mode de fonctionnement et son écosystème.
Ce qu’il peut apporter et les pièges à éviter
https://github.com/kanedafromparis/prez-fabric8-dmp
Continuous Integration: SaaS vs Jenkins in CloudIdeato
Dopo la diffusione del Cloud Computing e di Docker, è ancora preferibile
adottare i classici SaaS di Continuous Integration rispetto ad un
sistema Jenkins in cloud?
L'intervento ha l’obiettivo di mostrare un caso d'uso applicato in
Ideato di migrazione da un SaaS quale Travis ad un sistema Jenkins in
cloud, sfruttando funzionalità di on demand tramite il cloud di Amazon
Web Services e di containerizzazione tramite Docker.
Tenendo in considerazione gli aspetti tecnici legati all’implementazione
e quelli che potrebbero impattare sul fronte economico come la mancanza
di automatizzazione e i tempi di setup, verranno mostrati pregi e
difetti di questo sistema e come può essere applicato ad una serie di
progetti. Infine verranno elencati una serie di prodotti recentemente
rilasciati e in grado di far evolvere ulteriormente l'attuale sistema.
DCEU 18: Tips and Tricks of the Docker CaptainsDocker, Inc.
Brandon Mitchell - Solutions Architect, BoxBoat
Docker Captain Brandon Mitchell will help you accelerate your adoption of Docker containers by delivering tips and tricks on getting the most out of Docker. Topics include managing disk usage, preventing subnet collisions, debugging container networking, understanding image layers, getting more value out of the default volume driver, and solving the UID/GID permission issues with volumes in a way that allows images to be portable from any developer laptop and to production.
This document discusses Selinko's use of Docker in their development, testing, and production environments. Some key points:
- Selinko is a Belgian company that provides secure IoT platforms and track and trace microchips.
- They use Docker for its portability, reproducibility, scalability, and other benefits aligned with the 12 factor app principles.
- In development, they use Docker Machine and Docker Compose. In testing, Jenkins. In production, CoreOS and systemd unit files to run Docker containers.
- They've learned best practices like avoiding running as root, minimizing layers, dealing with images sizes being virtual, and using Tini to avoid signals and zombies in containers.
Hands on Docker - Launch your own LEMP or LAMP stack - SunshinePHPDana Luther
In this tutorial we will go over setting up a standard LEMP stack for development use and learn how to modify it to mimic your production/pre-production environments as closely as possible. We will go over how to switch from Nginx to Apache, upgrade PHP versions and introduce additional storage engines such as Redis to the equation. We'll also step through how to run both unit and acceptance suites using headless Selenium images in the stack. Leave here fully confident in knowing that whatever environment you get thrown into, you can replicate it and work in it comfortably.
Streamline your development environment with dockerGiacomo Bagnoli
These days applications are getting more and more complex. It's becoming quite
difficult to keep track of all the different components an application needs in order to
function (a database, a message queueing system, a web server, a document
store, a search engine, you name it.). How many times we heard 'it worked on my
machine'?. In this talk we are going to explore Docker, what it is, how it works
and how much it can benefit in keeping the development environment consistent.
We are going to talk about Dockerfiles, best practices, tools like fig and vagrant,
and finally show an example of how it applies to a ruby on rails
application.
Running Docker in Development & Production (DevSum 2015)Ben Hall
This document provides an overview of Docker containers and how to use Docker for development and production environments. It discusses Docker concepts like images, containers, and Dockerfiles. It also demonstrates how to build images, run containers, link containers, manage ports, and use Docker Compose. The document shows how Docker can be used to develop applications using technologies like ASP.NET, Node.js, and Go. It also covers testing, deploying to production, and optimizing containers for production.
Running Docker in Development & Production (#ndcoslo 2015)Ben Hall
The document discusses running Docker in development and production. It covers:
- Using Docker containers to run individual services like Elasticsearch or web applications
- Creating Dockerfiles to build custom images
- Linking containers together and using environment variables for service discovery
- Scaling with Docker Compose, load balancing with Nginx, and service discovery with Consul
- Clustering containers together using Docker Swarm for high availability
Thanks to tools like vagrant, puppet/chef, and Platform as a Service services like Heroku, developers are extremely used to being able to spin up a development environment that is the same every time. What if we could go a step further and make sure our development environment is not only using the same software, but 100% configured and set up like production. Docker will let us do that, and so much more. We'll look at what Docker is, why you should look into using it, and all of the features that developers can take advantage of.
What is DocuOps. How does Asciidoctor contribute? How to add it to your Maven & Gradle build. Tying all of the tech documentation together in a single project from commit to publish.
The document discusses building a lightweight Docker container for Perl by starting with a minimal base image like BusyBox, copying just the Perl installation and necessary shared libraries into the container, and setting Perl as the default command to avoid including unnecessary dependencies and tools from a full Linux distribution. It provides examples of Dockerfiles to build optimized Perl containers from Gentoo and by directly importing a tarball for minimal size and easy distribution.
Docker can be used as an everyday development tool. It allows building, shipping and running applications securely by using containers. Containers allow encapsulating applications from the host machine and provide resource isolation using features like cgroups and namespaces. The key Docker concepts include images, containers, volumes, and the Docker engine. Docker Compose can be used to define and run multi-container Docker applications using a YAML file.
- The document discusses Docker, a tool that allows users to package applications into standardized units called containers for development, shipping and running applications.
- It provides an overview of Docker concepts like images, containers, the Dockerfile and Docker Hub registry. It also includes examples of Docker commands and a sample Dockerfile.
- The document encourages readers to use Docker for benefits like continuous integration/delivery, distributed applications and easy application deployment in a platform-as-a-service model.
Hands on Docker - Launch your own LEMP or LAMP stackDana Luther
In this tutorial we will go over setting up a standard LEMP stack for development use and learn how to modify it to mimic your production/pre-production environments as closely as possible. We will go over how to switch from Nginx to Apache, upgrade PHP versions and introduce additional storage engines such as Redis to the equation. We’ll also step through how to run both unit and acceptance suites using headless Selenium images in the stack. Leave here fully confident in knowing that whatever environment you get thrown into, you can replicate it and work in it comfortably.
Cloud hybridation leveraging on Docker 1.12Ludovic Piot
Since many apps are not about just a single container, this talk discusses the ability and benefits of creating an hybrid Docker cluster capacity leveraging on Linux+Windows OS and x86+ARM architectures.
Moreover, the Docker nodes composing this cloud will be hosted across several providers (local DC, cloud vendors such as Azure or AWS), in order to face various scenarios (cloud migration, elasticity…).
Organizations need to gain insight and knowledge from a growing number of Internet of Things (IoT), APIs, clickstreams, unstructured and log data sources. However, organizations are also often limited by legacy data warehouses and ETL processes that were designed for transactional data. In this session, we introduce key ETL features of AWS Glue, cover common use cases ranging from scheduled nightly data warehouse loads to near real-time, event-driven ETL flows for your data lake. We discuss how to build scalable, efficient, and serverless ETL pipelines using AWS Glue. Additionally, Merck will share how they built an end-to-end ETL pipeline for their application release management system, and launched it in production in less than a week using AWS Glue.
Slides of our talk at adaptTo 2016, Chetan Mehrotra and myself (https://adapt.to/2016/en/schedule/let_s-run-the-whole-web-on-apache-sling-and-oak-.html).
The code is at https://github.com/bdelacretaz/sling-adaptto-2016 and uses Docker to build a dynamic cluster of Apache Sling instances.
Apache Bigtop and ARM64 / AArch64 - Empowering Big Data EverywhereGanesh Raju
Apache Bigtop packages the Hadoop ecosystem into RPM and DEB packages. It provides a foundation for commercial Hadoop distributions and services. Bigtop features include a build toolchain, package framework, Puppet deployment scripts, and integration test framework. The next release of Bigtop 1.4 is upcoming in early April 2019, adding AArch64 support, improved testing, and package version updates. Future work includes focusing on core big data components like Spark and Flink, adding Kubernetes and cloud support, and expanding integrations.
Continuous Integration and Deployment Best Practices on AWS (ARC307) | AWS re...Amazon Web Services
With AWS, companies now have the ability to develop and run their applications with speed and flexibility like never before. Working with an infrastructure that can be 100 percent API driven enables businesses to use lean methodologies and realize these benefits. This in turn leads to greater success for those who make use of these practices. In this session, we talk about some key concepts and design patterns for continuous deployment and continuous integration, two elements of lean development of applications and infrastructures.
This document provides an overview of continuous integration and deployment best practices on AWS. It discusses what continuous integration is and how it helps with rapid development by making changes and deployments iterative rather than monolithic. This allows bugs to be detected quickly. The document then discusses tools that can be used to implement continuous integration, such as AWS services, configuration management systems like Puppet, deployment frameworks like AWS Elastic Beanstalk, and infrastructure management tools like AWS CloudFormation. It also provides tips for scaling tools like Puppet masters and optimizing continuous integration and deployment workflows.
Talk at RubyKaigi 2015.
Plugin architecture is known as a technique that brings extensibility to a program. Ruby has good language features for plugins. RubyGems.org is an excellent platform for plugin distribution. However, creating plugin architecture is not as easy as writing code without it: plugin loader, packaging, loosely-coupled API, and performance. Loading two versions of a gem is a unsolved challenge that is solved in Java on the other hand.
I have designed some open-source software such as Fluentd and Embulk. They provide most of functions by plugins. I will talk about their plugin-based architecture.
This document provides an overview of CRX and Sling best practices for web applications. It discusses CRX terminology, architecture, resource addressing, script resource inheritance, using a file vault for source control, and updating content with the Sling Post Servlet. Code examples are provided for modularizing scripts and creating image renditions with graphics libraries.
Hack Shack workshop: Persist, optimize and accelerate using persistent storag...Michael Mattsson
This document summarizes a workshop on using persistent storage in Kubernetes. It will cover storage plugins in Kubernetes like CSI, various storage objects, and use cases. Attendees will have the option to deploy a Kubernetes cluster and storage plugin and provisioner, and deploy a stateful workload. The workshop will provide prerequisites and cover how storage works in Kubernetes and the Container Storage Interface (CSI) standard. It will also overview storage API objects like PersistentVolumes and StorageClasses and how a dynamic provisioner works. Finally, it will give an example HPE storage plugin and parameters and discuss example use cases for persistent storage.
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
OSGi Community Event 2016 Presentation by David Bosschaert (Adobe) & Carsten Ziegeler (Adobe)
The OSGi expert groups are working on the next big release. Learn in this session about the various new specification efforts going on and how they will make your developer life easier. The new specifications range from configuration handling, object conversion, JAX-RS, distributed eventing, to cloud and IoT.
Building an MLOps Stack for Companies at Reasonable ScaleMerelda
A practical talk on showing the following:
1. Challenges of Deploying ML today
2. How to do MLOps:
- Principles over Technology
- Convention over Configuration
3. What's a reasonable MLOps Stack
4. Demo on Google Collab to Deployed Endpoint
Michal Malohlava talks about the PySparkling Water package for Spark and Python users.
- Powered by the open source machine learning software H2O.ai. Contributors welcome at: https://github.com/h2oai
- To view videos on H2O open source machine learning software, go to: https://www.youtube.com/user/0xdata
Apache Spark with Java 8 training covers the basics of Apache Spark including its features like speed, support for multiple languages, and advanced analytics capabilities. It also covers Spark concepts like RDDs, DataFrames, and Spark SQL. The training discusses how Java 8 features like lambda expressions improve Spark development. It teaches Spark programming concepts and how to develop Spark applications and run them on clusters.
https://www.learntek.org/apache-spark-with-java/
https://www.learntek.org/
Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses.
CQ5 and Sling provide an overview of content management systems and frameworks. CQ5 is a content management system built on Apache Sling, which is an applications framework for JCR content repositories based on OSGi. Sling allows for dynamic modules and services and fosters modular code. Together, CQ5 and Sling provide a flexible and powerful way to manage content on a website through a content-centric approach where everything is treated as content.
High-Throughput Genomics on AWS - LFS309 - re:Invent 2017Amazon Web Services
Learn how to containerize common tools used in genomics for use on Amazon ECS, and then orchestrate workflows using these containerized tools with AWS Batch and AWS Step Functions. Participants have the opportunity to deploy a primary and secondary sequencing analysis workflow on AWS and learn some of the best practices for AWS Batch and Step Functions.
Learn how to containerize common tools used in genomics for use on Amazon ECS, and then orchestrate workflows using these containerized tools with AWS Batch and AWS Step Functions. Participants have the opportunity to deploy a primary and secondary sequencing analysis workflow on AWS and learn some of the best practices for AWS Batch and Step Functions.
This document discusses building a Slack bot using AWS Lambda and the Chalice framework. It describes how FaaS works, options for running functions through AWS Lambda including Python support. It then outlines how to build a Slack bot with Chalice that allows users to query Stack Overflow through natural language requests in Slack. Key steps include setting up the bot to handle requests, retrieving secrets securely, formatting responses, and deploying the code to AWS Lambda to be accessible through Slack. It also briefly discusses additional uses of FaaS beyond a basic bot including cron jobs and handling external events.
Semelhante a Building an Apache Sling Rendering Farm (20)
Slides of my talk at Very Tech Trip 2023, Paris, on what the Web Platform is and how I think it makes JavaScript Web Frameworks obsolete in many cases.
Surviving large online communities with conciseness and clarity Bertrand Delacretaz
Slides of my FOSS Backstage 2022 (remote) talk, https://pretalx.com/foss-backstage-2022/talk/9S3PJE/ - how conciseness & clarity help communicate efficiently in large online communities.
The Moving House Model, adhocracy and remote collaborationBertrand Delacretaz
Slides of my February 2021 talk at FOSS Backstage, https://foss-backstage.de
Moving house with the help of a group of friends is an interesting exercise in collective improvisation and coordination. Everybody can help with most of the jobs at hand, so the challenge is to keep people busy in a meaningful way, to make the best use of the physical and intellectual resources available, while keeping people happy and engaged.
Sounds familiar? The Moving House model does apply to other types of group projects, including software development. Adhocracy, Asynchronous Collaboration and a can-do attitude, as practiced in Open Source communities, are key elements that enable groups that have no formal structure to collaborate efficiently and smoothly - like when helping friends moving house.
Slides of my talk in the Community track of the ApacheCon @Home 2020 conference. The video will be available on the "TheApacheFoundation" channel on YouTube, https://www.youtube.com/channel/UCLDJ_V9KUOdOFSbDvPfGBxw
Ma présentation à https://www.blendwebmix.com/ 2019
Video: https://youtu.be/eE7YhQpPdcM?t=4560
Dans un monde qui se numérise toujours plus, les logiciels libres sont partout: dans votre téléphone, votre ascenseur, votre voiture, votre banque, etc… plus que jamais, l’Open Source est au coeur de notre monde numérique.
Au-delà de ces contributions très concrètes au bien-être de nos sociétés, les communautés Open Source ont aussi inventé et mis en pratique des techniques de collaboration innovantes, distribuées, asynchrones. Souvent sans chef clairement identifié, ni planification précise, ces groupes de travail informels produisent des logiciels de grande qualité, qui pour certains ont créé des marchés ou révolutionnés les pratiques numériques. Le succès de ces groupes est étonnant quand on le compare aux nombreux projets informatiques ratés dans des groupes beaucoup plus structurés, entreprises ou organismes d’Etat par exemple.
L’Open Source change le monde…vraiment? Tout en gardant les choses en perspective, nous présenterons plusieurs exemples concrets où cela se vérifie, par la création d’outils partagés, la découverte de talents, la diffusion des connaissances et la création de logiciels d’infrastructure qui sont devenus des standards de l’industrie.
Shared Neurons - the Secret Sauce of Open Source communities?Bertrand Delacretaz
The document is a slide presentation on how open communication and collaboration ("shared neurons") between many contributors is key to the success of open source projects. The presentation argues that open source thrives on constant communication between contributors, with people sharing work early and often, engaging in focused but slow discussions, and allowing for mistakes in the process of collaboratively creating something greater than any single person could achieve alone.
Open Source at Scale: the Apache Software Foundation (2018)Bertrand Delacretaz
The Apache Software Foundation (ASF) provides open source software for the public good by supporting many software project communities. It operates as a neutral space independent from corporate influence where projects can thrive under the Apache License 2.0. The ASF oversees around 300 top-level projects at various stages, providing services like documentation, marketing, packaging, and technical support to help projects. It relies on a large volunteer community and small budget to sustain its open governance model and infrastructure for open source projects.
They don't understand me! Tales from the multi-cultural trenchesBertrand Delacretaz
Slides from my FOSS Backstage 2018 talk on the difficulties of collaborating in multicultural environments.
A video recording should be available soon.
https://foss-backstage.de/session/they-dont-understand-me-tales-multi-cultural-trenches
Prise de Décisions Asynchrone, Devoxx France 2018 (avec vidéo)Bertrand Delacretaz
Vidéo: https://www.youtube.com/watch?v=xkC4zjtAyRc - c'est la version française de ma présentation sur la Prise de Décisions Asynchrone, enregistrée à Devoxx France 2018.
Slides of my "Asynchronous Decision Making - why and how?" talk at the http://fossbackstage.de/ micro-summit, November 2017
I also gave this talk at FOSDEM 2018, a video recording (with somewhat poor audio unfortunately) is available at https://fosdem.org/2018/schedule/event/community_decision_making_why_how/
There's also a video recording of the French speaking version at devoxx.fr 2018, https://www.youtube.com/watch?v=xkC4zjtAyRc
See also my opensource.com article on the same topic at https://opensource.com/article/17/12/asynchronous-decision-making and a slightly older blog post at https://blogs.apache.org/foundation/entry/success-at-apache-asynchronous-decision
Who needs meetings? Asynchronous Decision Making to the rescueBertrand Delacretaz
The document discusses asynchronous decision making as an alternative to meetings. It notes that meetings can be very expensive and inefficient, especially for those on tight schedules. It outlines four steps to making asynchronous decisions - brainstorming options, reaching consensus, and making a decision - using shared communication channels and case management tools. The document advocates for keeping efficient meetings but preparing them seriously, and using asynchronous decision making to make many meetings unnecessary, as open source projects frequently do.
Slides of my ApacheCon 2014 talk on simplicity. Creating simple software is hard work, we shouldn't give up until what we are building is simple enough.
I will NOT attend your meeting - I'm an Open Source personBertrand Delacretaz
The document discusses the inefficiency of meetings from the perspective of an open source person. It notes that meetings can waste half a day for makers and creators, while being just another slot for managers. It then lists different types of failed meetings and questions whether recurring scheduled meetings are useful. The document acknowledges that brainstorming, vision, and teamwork meetings with clear goals can be valuable when the results are captured. It concludes by stating the author will not attend a meeting if it has no clear goals, has too many attendees, they cannot prepare for it, it is the wrong audience, or the issue can be better solved online.
Open Development in the Enterprise, 19 minutes 2016 versionBertrand Delacretaz
This document discusses how open and distributed teams can work successfully together despite challenges like different cultures, timezones, and languages. It notes that open source projects have shown how semi-chaotic, multicultural, distributed teams can collaborate through mechanisms like issue trackers, shared code repositories, mailing lists, and archives to facilitate feedback and decision making without the need for meetings. Key principles that enable this include open communication to all, merit-based contributions, sustainable conflict resolution processes, and self-service archives.
The answer is no, but it will help! There's not much commentary on those slides actually, you had to be there. The actual model is at https://community.apache.org/apache-way/apache-project-maturity-model.html
The traditional "how's the Apache Software Foundation doing" talk that introduces the conference. Original slides by Shane Curcuru's, used and remixed with permission.
Ready to Unlock the Power of Blockchain!Toptal Tech
Imagine a world where data flows freely, yet remains secure. A world where trust is built into the fabric of every transaction. This is the promise of blockchain, a revolutionary technology poised to reshape our digital landscape.
Toptal Tech is at the forefront of this innovation, connecting you with the brightest minds in blockchain development. Together, we can unlock the potential of this transformative technology, building a future of transparency, security, and endless possibilities.
HijackLoader Evolution: Interactive Process HollowingDonato Onofri
CrowdStrike researchers have identified a HijackLoader (aka IDAT Loader) sample that employs sophisticated evasion techniques to enhance the complexity of the threat. HijackLoader, an increasingly popular tool among adversaries for deploying additional payloads and tooling, continues to evolve as its developers experiment and enhance its capabilities.
In their analysis of a recent HijackLoader sample, CrowdStrike researchers discovered new techniques designed to increase the defense evasion capabilities of the loader. The malware developer used a standard process hollowing technique coupled with an additional trigger that was activated by the parent process writing to a pipe. This new approach, called "Interactive Process Hollowing", has the potential to make defense evasion stealthier.
Discover the benefits of outsourcing SEO to Indiadavidjhones387
"Discover the benefits of outsourcing SEO to India! From cost-effective services and expert professionals to round-the-clock work advantages, learn how your business can achieve digital success with Indian SEO solutions.
1. APACHE SLING & FRIENDS TECH MEETUP
BERLIN, 25-27 SEPTEMBER 2017
Building an Apache Sling Rendering Farm
Bertrand Delacretaz
@bdelacretaz
Sling committer and PMC member
Principal Scientist, Adobe AEM team
slides revision 2017-09-25
2. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 2
What are we building?setting the stage
3. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 3
How is Sling used today?
Load
BalancingThe Web
Publishing Instances
Sling instances dedicated to single tenants or “friendly” tenants.
Rendering
+ Caching
Content
Repository
Rendering
+ Caching
Content
Repository
Rendering
+ Caching
Content
Repository
Rendering
+ Caching
Content
Repository
Content
Repository
Authoring
Content Distribution
4. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 4
A Massive Sling Rendering/Processing Farm?
Content
Repository
Resource
Resolution
Scripting +
Rendering
Resource
Resolution
Resource
Resolution
Resource
Resolution
Scripting +
Rendering
Scripting +
Rendering
Scripting +
Rendering
Load
Balancing
Load
Balancing
Elastic scaling at each stage
Multiple developers (“tenants”) see their own world only
5. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 5
Federated ServicesThis 2017 after all
6. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 6
Content
Repository
Resource
Resolver
Scripting and
Rendering
Script
Resolver
HTTP
front-end Sling Engine
Microservices!
Nice and trendy,
but will that
perform?
HTTP
HTTP
HTTP HTTP HTTP
HTTP
Each component is an independent HTTP-based service, aka “religious microservices”
7. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 7
The Sling PipelineFaithfully serving requests since 2007!
8. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 8
Content
Repository
Resource
Resolver
Scripting and
Rendering
Script
Resolver
Resource ScriptRequest Output
Sling Request Processing Pipeline
1 2 3 4
Conceptually, the request hits the repository first, to get the Resource.
Scripts and Servlets are equivalent, considering scripts only here.
All in-memory and in-process!
sling:include
5..N
content aggregation!
9. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 9
Content
Repository
Scripting and
Rendering
Script
Resolver
Scripts
Output
Federated Services Friendly?
Resource
Resolver
Content
Aggregator
Aggregated
Content
Request
Process boundaries
10. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 10
Reasonably Federated?Can we get isolation AND performance?
11. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 11
HTTP
front-end
Reasonably Federated Sling Rendering Farm?
Aggregated
Content
Content
Repository
Resource
Resolver
Content
Aggregator
Content Provider
Service
Content Rendering
Service
Scripting and
Rendering
Script
Resolver
Scripts
Repository
Output
It’s still mostly Sling, with the addition of a
(scripted?) content aggregation step.
Federated services provide more deployment and
scaling options.
Sandboxed
Execution
Isolated
Content
Sandboxed
Execution
12. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 12
Sandboxing & IsolationHow?
13. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 13
Sandboxing & Isolation?
Scripting and
Rendering
Sandboxed
Execution
Content
Repository
Isolated
Content
Content
Aggregator
Sandboxed
Execution
Repository Access Control
can work but require a dynamic
search path in Sling, see our
experiments. Impacts caching, and
mapping of incoming to resource
paths is needed.Tried and tested.
Repository jails look possible
with probable impact on Sling
internals. Same with multiple
SlingRepository services. New
and more like a blacklist.
Custom, restricted languages
are the safest? HTL (Use-API?),
Handlebars?
Sandboxing Nashorn
(JavaScript) looks possible but not
ideal, see our experiments.
Sandboxing Java is not realistic-
IBM canceled multi tenant JVM
project for example.
14. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 14
But it’s a VM, right?
Oak
Libraries Sling Engine
JavaVirtual Machine
content
Oak
Libraries Sling Engine
JavaVirtual Machine
content
Oak
Libraries Sling Engine
JavaVirtual Machine
content
Perfect isolation!
Java classes
memory space
Application
memory space
Java classes
memory space
Application
memory space
Java classes
memory space
Application
memory space
But suboptimal use of resources!
(and containers wouldn’t help)
15. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 15
Sandboxing scripting languages?
<%
var length = 0;
if (request.getRequestParameter("file") != null) {
var file = null;
// store file
var reqPara = request.getRequestParameter("file");
var is = reqPara.getInputStream();
file = Packages.java.io.File.createTempFile("posttest", ".txt");
var fout = new Packages.java.io.FileOutputStream(file);
var c;
while ((c = is.read()) != -1) {
fout.write(c);
}
fout.close();
// read length
length = file.length();
}
%>
OS
Resources
Infinite
Loops
Java classes
& services
Memory
Usage?
Many things need to be limited.
Whitelist approach is much safer -> custom languages?
HTL inherently sandboxed, except its Use-objects
16. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 16
Containers?
Oak
Libraries Sling Engine
OS container
content
Java classes
memory space
Application
memory space
SMALL!
Shared Memory
Pools, Caches etc.
memory
Oak
Libraries Sling Engine
OS container
content
Java classes
memory space
Application
memory space
SMALL!
Oak
Libraries Sling Engine
OS container
content
Java classes
memory space
Application
memory space
SMALL!
Same problem as multiple JVMs
Sharing caches, compiled scripts etc. can be a pragmatic solution.
17. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 17
What do we do?
18. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 18
Hybrid Sling Rendering Farm
Annotated
Aggregated
Content
HTTP
front-end
HTTP
routing
Scripting +
Rendering
Script
Resolver scripts
Shared Services
Custom
Code
Script
Resolver scripts
Tenant-Specific Services
servletscontent
Resource
Resolver
Content
Aggregator
Oak
Libraries
Shared Services
Sandboxed
Execution
New
Component
Content-driven
routing
Isolated
Content
Dynamic
Search Path
Provides the flexibility of Sling via tenant-specific services and dynamic routing.
Uses shared services for the common parts.
Allows for billable options depending on the actual routing.
19. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 19
Experimentsbuilding blocks that might be reusable
20. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 20
Resolving new types of scripts Experim
ent
Script
Resolver
Client
GET
Request
Wrapped
AGG
Request
Wrap the request to make it appear as an
AGG (*) request and pass that to the
Sling ServletResolver.
Adapt the return SlingScript to an
InputStream to read its text.
(*) or any other non-existent HTTP verb.
Content
Repository
/apps
/myapp
/AGG.js
AGG.js
script
text
Code at https://github.com/bdelacretaz/sling-adaptto-2017 (ContentBVP.java)
21. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 21
Resolving a SLING-CONTENT script Experim
ent
Code at https://github.com/bdelacretaz/sling-adaptto-2017 (ContentBVP.java)
String getAggregatorScript(SlingHttpServletRequest r) {
String result = null;
Servlet s =
servletResolver.resolveServlet(
new ChangeMethodRequestWrapper(r, "SLING-CONTENT"));
if(s instanceof SlingScript) {
InputStream is = ((SlingScript)s).getScriptResource()
.adaptTo(InputStream.class); }
if(is != null) {
result = IOUtils.toString(is)
}
}
return result;
}
adaptTo() Bonus Points!
22. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 22
Content Aggregation with Sling Query Experim
entvar $ = Packages.org.apache.sling.query.SlingQuery.$
var SearchStrategy =
Packages.org.apache.sling.query.api.SearchStrategy
var resourceResolver = resource.getResourceResolver()
var result = {
siblings : $(resource).siblings(),
rootChildren : $(resource).parents().last().children(),
queryResult :
$(resourceResolver)
.searchStrategy(SearchStrategy.QUERY)
.find("nt:base[title=foo]")
} Used in a BindingsValuesProvider?
Or in a custom json renderer servlet which runs this script.
Inherently sandboxed due to custom language.
https://sling.apache.org/documentation/bundles/sling-query.html
23. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 23
Dynamic scripts/servlet search path Experim
entif(dynamicServletResolver.canResolve(resource)) {
servlet = dynamicServletResolver.resolveServlet(request);
} else {
…existing resolver code
}
A fairly simple change to the SlingServletResolver - should evolve
into a real extension point if desired, and probably get the
request as well.
Tested in SLING-4386 - another multitenant experiment which
provides tenant-specific scripts but no real isolation.
Currently requires disabling the servlet resolution cache.
25. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 25
CODAwhere to now?
26. Building an Apache Sling Rendering Farm - Bertrand Delacretaz, adaptTo 2017 26
CODA
Thank you for attending!
I’m Bertrand Delacretaz (@bdelacretaz)
In-memory nature of Sling is an important
differentiator, in good and bad ways!
Hybrid Rendering Farm promising - do you need it?
Sandboxing is difficult, whitelisting much
preferred, custom languages?
Reusable
experiments?