adaptTo() 2015 - 28th-30th September in Berlin
More information about adaptTo() 2016: Homepage
Carsten Ziegeler, Adobe
David Bosschaert, Adobe
The industry is moving to container based deployments and monolithic applications are split up into separately runnable smaller pieces, microservices. In this session we will explore how to run AEM in such a world and how to independently scale different parts of the architecture. OSGi and Apache Sling provide an ideal foundation for deploying and running functional parts in separate containers as microservices. These services can be used to build an IoT solution. The session will end with a demo where an IoT device consumes the microservice live on stage.
Conrad Wöltge, Netcentric AG
Dominik Süß, Adobe
Every developer has heard at least myths about Continuous Integration, Continuous Delivery and DevOps by now. The implementation of those topics can vary widely and is subject of constant controversial discussions.
We want to have a closer look at various aspects and see how to make them fit into our highly modular Sling-based technology stack. This session should provide an introduction to fundamental concepts as well as best practices, approaches and ideas how to set up your own delivery pipeline.
Georg Henzler, Netcentric AG
Everyone is talking about DevOps and Microservices today - how do these paradigms fit into the world of AEM and Sling projects? One important technical part of DevOps is infrastructure automation, achieving this with AEM applications can be challenging (no matter how easy it seems when you click a quickstart.jar for the first time). Although my initial driver for making unattended AEM installations happen wasn't DevOps but reducing the time for local dev setups, today we use it to for setting up staging instances as well.
This talk will illustrate our experiences.
Docker is a modern way of encapsulation and deployment of applications. In this presentation I'll show you how to run AEM in Docker in Test and Live Environments as well as benefits and pitfalls of docker in private datacenters and in AWS.
Radu Cotescu, Adobe
For the past two years HTL/Sightly has allowed developers to write cleaner and more secure scripts for their rendering components. However, tooling in this area mostly relied on HTML syntax highlighting in an editor of your choice and script validation through platform deployment. What if I told you that there's a better alternative now? An independent HTL compiler eased the way to developing the HTL Maven Plugin.
This session will walk you through the features of the HTL compiler and how you can integrate with it to build useful HTL-centric tools.
Robert Munteanu, Adobe
This talk contains an overview of the Sling IDE tooling which is actively developed under the Apache Sling project.
Developers attending this talk will get a better understanding of how the Sling IDE tooling can help them be more productive, whether they are working with bundles only with content packages as well.
This talk will feature both the Eclipse and IntelliJ plug-ins, which are now converging towards a common code base.
Rima Mittal, Publicis Sapient
Ankit Gubrani, Nextrow BPO Services
Ever given a thought on how machine intelligent the softwares are getting nowadays? Lets imagine a situation when you surf a video on youtube and you are not given any recommendations for similar videos, Or a situation when none of the irritating mails we get automatically go to our spam folder? Life would not be as easy as it currently is.
Machine learning is getting in trend and so we thought about Integrating Apache Mahout with AEM to simply make our AEM applications smarter and interesting!
Mahout helps us in 3 different ways:
We will focus on a typical use case of developing E-commerce applications in AEM and providing product recommendations on the basis of user search history.
Michael Dürig, Adobe
Ever wondered what is inside the TarMK's tar files? What is a segment and what is a record? How segment store garbage collection works and why (or why not)?
This session will answer these questions and many more. It will shed light on the inner working of the TarMK, its system requirements and performance characteristics. It will help participants to better understand and diagnose the cause of common problems and present tools and techniques for diagnosing and debugging. Finally there will be a preview of what new features and enhancements we are currently working on.
Vlad Bailescu, Adobe
Remote Resources - Bridging the gap between Sling and micro-services. This is an implementation of the ResourceProvider interface which enables access to remote/backend services using the Sling Resource API. It offers an API, a configuration-driven REST JSON client and extension points for remote requests pre/post-processing. Other clients (for example SOAP XML) can also be created on top of this API.
Siddharth Palaniswami, Adobe
AEM Communities helps you create online community experiences. Online communities are designed to be highly engaging, interactive experiences. They often have to handle very high volumes of user generated content and also present dynamic personalized content to end users.
In this session, we will take a look at how AEM Communities leverages the power of Sling and extends its capabilities to create highly customizable and dynamic components that are capable of handling large volumes of user generated content.
We will dive into the Social Component Framework (SCF). SCF is a framework developed by the AEM Communities team in order to create components that can deliver dynamic content. The framework allows you to build components that behave like mini single-page (or single viewport) applications by leveraging client side (isomorphic) rendering using templates and JSON endpoints. SCF is designed to make components highly customizable and extensible while simultaneously providing a robust HTTP API (based on Sling standards) that allows for integrations with other clients and systems. We will take a detailed look at how the Social Component Framework leverages various capabilities of Sling/OSGi to achieve this.
We will learn about the Storage Resource Provider (SRP) - a custom resource provider that allows you to store data (user generated content) in a shared/scalable storage alternative such as MongoDB or in the cloud. We will also see how AEM Communities offers powerful search capabilities by integrating with Solr.
Lastly we will learn how to utilize SCF and SRP to rapidly build scalable dynamic applications.
Bertrand Delacretaz, Adobe
Chetan Mehrotra, Adobe
"Could we run the whole Web on this thing?" is a good question to ask when designing scalable systems.
So, could we run the whole Web on Apache Sling and Oak? The best way to find out is to try it! Unfortunately we couldn’t convince the whole Web to participate in our experiment, so our “let’s aim high” prototype needs to simulate a number of things.
Using these simulations to break our initial prototypes by overloading them has helped us discover potential bottlenecks and how to avoid them. We’ve also reported and fixed a few issues in these projects, also to help improve their monitoring capabilities.
Besides having fun breaking prototypes, one of our goals is to create guidelines for scalable Sling/Oak apps, which we’ll describe in this talk. Some parts of the JCR spec and some existing Sling services will prevent scaling if used without care, and as such might need to be avoided depending on the level of scaling that’s actually needed for a given application.
Our prototype code will be available for you to play with it and test your own variants.
This talk will help you better understand the issues related to massive scaling, and how to avoid creating bottlenecks in your own code.
Valentin Olteanu, Adobe
Andrei Dulvac, Adobe
As automated testing has become a hot topic in ths Sling community (as seen in the 2015 adaptTo sessions), more effort is being put into developing test tooling for applications built on top of Sling. The need arised for a base framework that encapsulates the core functionality and patterns. The Sling Http Testing Framework is an elegant solution that gives freedom to the developers, while taking care of thread-safety, adapting clients and performing basic Sling tasks over HTTP. It has already proven its usefulness by allowing easy development and maintenance of application-level clients and tests for Adobe AEM.
Sling Http Testing Framework is the evolution of existing http clients from sling testing tools. It provides out-of-the-box clients for automating various operations on a Sling instance, such as create / delete nodes and users, manipulate OSGi settings. It is built on top of Apache HttpClient 4.5 using the fluid, immutable style and it comes with Sling-specific configurable defaults for http settings, cookies, authentication, authorization and interceptors. The clients were designed with extensibility in mind, so developers can write their own application-specific layer.
Coincidentally named ""adaptTo()”, this method is the main mechanism that allows clients to change facets while keeping the same http internal settings.
The framework also comes with a collection of JUnit Rules that encapsulate boilerplate code for writing Sling tests. Tests using these rules are very easy to write since they bring out-of-the-box things like filtering tests, http timeouts or automatically instantiating the Sling Clients based on available instances, while allowing a high level of configurability.
The well-designed architecture allows seamless integration with other tools based on Apache HttpClient like HApi - the Hypermedia API Tools.
Stefan Seifert, pro!vision GmbH
After a short introduction on Sling & AEM Mocks in general this talk focuses on the new features and improvements that were done in the last 1-2 years, including support for the latest OSGi, Sling and AEM versions. We also give some hints for best practices integrating the mocks in your Maven project.
Stefan Seifert, pro!vision GmbH
Managing configuration in Sling and AEM applications is a complex task when it goes beyond system configuration and what OSGi provides out of the box. This talks focuses on tenant- and context-aware configuration. After giving an overview what solutions are available in Sling and AEM today, the new Sling Context-Aware Configuration support is introduced.
Stefan Meyer, SinnerSchrader AG
The talk will cover the basic usage, the challenges of integrating AEM and react and examples ranging from simple components to single page app.
Davide Giannella, Adobe
Apache Jackrabbit Oak builds the foundations of lead products such as AEM. Let's learn for fun in this session how to build a java application which leverages Oak as a persistence. We will construct the repository, put some initial content, add nodes, and perform a query.
Mike Tilburg, Adobe
Tom Blackford, Adobe
Last year we introduced you to Adobe Managed Services and showed you some of our complicated customer clouds. This year we want to delve further into the methodologies we use to test and optimise performance in Amazon Web Services. The session will cover our matured performance testing practises for the cloud and how we conquered complicated, multi region challenges. Aside from performance recommendations, we will discuss handling of large asset datastores with over 20TB of data.
Carsten Ziegeler, Adobe
David Bosschaert, 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.
Jan Wloka, Quatico Solutions AG
When developing web applications with AEM automated tests can be an indispensable tool. You probably write integration tests and run them occasionally. If a test points you to a bug, you would like to have more of them, but they are slow, quite difficult to write, and maintenance is a pain.
In this talk, you'll learn how a unified testing API can be built on top of 'wcm.io' to test different layers of your application. How builders with smart default values let you write complex test setups within a few lines of code, without duplicating test data or mocks all over the place. We'll show how dynamic proxies bind the same API to test runners on different testing layers (unit, integration, ui) and let you split up an integrated test into unit tests easily. You'll see how best practices for initializing, stubbing and mocking objects can be made consistently available, thus you can write more isolated tests and listen to their feedback more frequently.
Nicolas Peltier, Adobe
Tool for doing extract - transform - load operations through a resource tree configuration. Often one-shot data transformations need sample code to be written & executed. This tiny tool set intends to provide the ability to do such transformations with proven & reusable blocks called "pipes", streaming resources from one to the other.
Jochen Koschorke, Netcentric AG
Roland Gruber, Netcentric AG
The AC tool was developed to provide an easy to use alternative to manual content packages and ACL Packager. It is used in almost all Netcentric projects and also by other companies. The tool is interesting for AEM developers as it fills a gap in AEM regarding access control management. It simplifies the specification and deployment of complex ACLs in AEM and makes them part of the application packages.
Mateusz Chromiński, Cognifide Limited
Managing permissions is crucial in CMS used by large number of users. AEM is definitely one of those. With every new group added the permission scheme becomes more and more complex. This makes the platform maintenance, auditability and reliability a real challenge.
During the presentation I will show an open source library developed internally in Cognifide and made available to the whole community right now. The APM (AEM Permission Management) is a rich UX console tailored for administrators. They can write human readable scripts that handle user/group creation/deletion and permissions application, both in bulk. Through it's flexible grammar, exposed API, and high extensibility it made our life much easier. We're now sharing the cake.
Thymeleaf is a modern server-side Java template engine for both web and standalone environments. Learn how to configure and extend Sling Scripting Thymeleaf and explore how it can be used in AEM to render page and mail templates.
Chetan Mehrotra, Adobe
Lots of things can happen when Sling processes a request in a real-life application, and it’s not always easy to figure out all the details.
The Sling Tracer tool, along with a brand new Chrome Developer plugin, helps introspect the Sling request processing to understand which code paths are executed, what gets written to the repository, which queries are fired, and lots of other details about request execution, in real time.
This talk provides an overview of these new tools, along with pointers to concrete example that will help developers use them efficiently.
Apache Karaf is a modern container for hosting any kind of applications. Let's see what Karaf has to offer and how you can run Sling on Karaf to serve websites and applications. Easily pick only what you need for your Sling application and install Sling's features by click.
- Lazy AEM Developer (Dawid Lewandowski)
- Analyse JCR and Log Data with Apache Spark (Daniel Schley)
- Staging by Versioning (Ralf Wunsch)
- Sling Oak Restrictions (Georg Henzler)
- Install Hooks with Groovy or Sling Pipes (Conrad Wöltge)
- AEM Manager (Stefan Seifert)
- AEM as the undercover investigation case platform (Jakub Kaniewski)