This document describes a company's transition from a monolithic .NET application to a microservices architecture hosted on AWS. It details their use of a UI composition pattern using Nginx, ESI, and Jigsaw to compose fragments from different services into complete pages. This allows independent deployment of features while maintaining performance. Key aspects include caching of assets and responses, combining stylesheets and scripts, and isolation of services through separate CSS and JS packages.
WSO2 is a global open source software company that provides a middleware platform for enterprise integration. This document discusses integration patterns that can be implemented using WSO2's middleware products, including the Enterprise Service Bus (ESB), which supports all enterprise integration patterns and can integrate disparate systems. Specific patterns covered include service orchestration, RESTful integration, SAP integration, guaranteed delivery, API facades, cloud-to-cloud and cloud-to-on-premise integration, high availability, and security patterns. Real-world use cases demonstrate how to achieve integration for connected businesses.
Get to know the new AMA application, the most important basic features of it, the differences between the Community and Enterprise version, and how you could extend it using our new plugin system. What the differences are between AMA and the APS, and what challenges we had during its development.
We consider a microservices architecture to achieve an end goal, not because it's "the cool thing to do". Every organization looking to adopt this architecture must realize (and adhere) to a set of foundational principles. Guided by those principles, we can correctly choose the technology to help support a microservices architecture and meet our end goals. This talk explains those core principles and gives you the tools needed for your microservices journey.
Talking about DevOps and containers at MS Insights Sao Paolo 2015.
Talking about containers being or not the solution to implementing DevOps practices ? This talk includes a demonstration that show the integration between Visual Studio Online, Docker Hub and GitHub for continuous integration and automated deployment.
This document discusses starting microservices with .NET. It begins with an introduction to microservices and the benefits of using them, such as improved scalability and resilience. It then covers common microservice patterns and technologies like API gateways, messaging, CQRS/DDD, and containers. Specific .NET tools are presented, including Ocelot for API gateways, RabbitMQ for messaging, MediatR for CQRS/events, and Docker for containers. The document emphasizes building microservices with failure in mind using techniques like retries, circuit breakers, and exponential backoff.
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
The presentation explains the journey from a monolithic architecture to Spring Cloud Microservices for application development inside a financial entity, along with the transition to DevOps strategies… a journey that has just begun…
Microservices with Node & Docker allow for building and deploying applications as independent services that can scale independently. Docker provides lightweight isolated environments for running services, while Node is well-suited as a platform due to its asynchronous and non-blocking I/O model and ease of building scalable network services. Together, Docker and Node enable a microservices architecture with improved developer productivity, deployment flexibility, and scalability compared to traditional monolithic applications.
This document provides an introduction to microservices architecture. It discusses why companies adopt the microservices style, how to design microservices, common patterns, and examples from Netflix.
The key points are:
1) Microservices architecture breaks applications into small, independent services that communicate over well-defined interfaces. This improves modularity, scalability, and allows independent deployments.
2) When designing microservices, services should be organized around business capabilities, have decentralized governance and data, and be designed to fail independently through patterns like circuit breakers.
3) Netflix is a leader in microservices and has open sourced many tools like Hystrix for latency handling and Eureka for service discovery that
MongoDB World 2019: Mastering MongoDB in Kubernetes
We will demonstrate why the MongoDB Enterprise Operator for Kubernetes is a game changer at Amadeus. The MongoDB Enterprise Operator for K8S is not just a resource for managing containers, it is a controller that extends the Kubernetes API.
THEFT-PROOF JAVA EE - SECURING YOUR JAVA EE APPLICATIONS
Security in applications is a never-ending story. Most of the knowledge about how to build secure applications is derived from knowledge and experience. And we've all done the same mistakes every Java EE developer does over and over again. But how to solve the real business requirements behind access and authorization with Java EE? Can I have a 15k rights matrix? Does that perform? How to secure the transport layer? How does session binding works? Can I implement 2-Factor-Authentication? And what about social integrations? This talk outlines the key capabilities of the Java EE platform and introduces the audience to additional frameworks and concepts which do help by implementing all kinds of security requirements in Java EE based applications.
How to deploy a Private Cloud based on WAP and Nutanix
Presented on May 28th, 2015 at TechDays Netherlands in The Hague:
The rise of virtualization and new applications has created pressure on IT departments to develop, deliver and maintain an application & storage infrastructure that is not only high performing, but also simple to manage, VM-centric and highly scalable. In this technical session, we'll discuss how to create the ideal infrastructure for Hyper-V and virtualized Windows applications, that is always available and literally invisible to the application teams. We will also explore a real world Windows Azure Pack deployment of the European Service Provider Synergics during this technical session. One of the Synergics’ architects will explain and demonstrate how they deployed a scalable, easy-to-manage cloud based on Windows Azure Pack.
Christian Posta is a principal middleware specialist and architect who has worked with large microservices architectures. He discusses why companies are moving to microservices and cloud platforms like Kubernetes and OpenShift. He covers characteristics of microservices like small autonomous teams and decentralized decision making. Posta also discusses breaking applications into independent services, shedding dependencies between teams, and using contracts and APIs for communication between services.
In this presentation we go over the motivations for wix.com R&D to move to a CI/CD/TDD model, how the model was implemented and the impact on Wix R&D. We will cover the tools used (developed in-house and 3rd party), change in methodologies, what we have learned during the transformation and the unexpected change in working with product and the rest of the company.
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)
Red Hat JBoss Fuse integration services delivers cloud-based integration based on OpenShift by Red Hat to deliver continuous delivery of tested, production-ready integration solutions. Utilizing a drag and drop, code-free UI and combining that with the integration power of Apache Camel, Fuse integration services is the next generation iPaaS. In this session, we'll walk you through why iPaaS is important, the current Fuse integration services roadmap, and the innovation happening in open source community projects to make this a reality.
This document summarizes Activiti 7 and Activiti Cloud. It discusses the core/non-cloud examples of embedding an Activiti engine into a single Java runtime. It then covers the key concepts of Activiti Cloud including connectors, runtime bundles, supporting services, and components. Examples are provided for security, processes, connectors, and the REST API. The document concludes by mentioning future directions for Activiti Cloud.
DevNexus 2017
Microservices-based architectures are en-vogue. The last couple of
years we have learned how the thought-leaders implement them, and
every other week we have heard about how containers and
Platform-as-a-Service offerings make them ultimately happen.
The problem is that the developers are almost forgotten and left alone
with provisioning and continuous delivery systems, containers and
resource schedulers, and frameworks and patterns to help slice
existing monoliths. How can we get back in control and efficiently
develop them without having to provision complete production-like
environments locally, by hand?
All the new buzzwords, frameworks, and hyped tools have made us forget
ourselves—Java developers–and what it means to be productive and have
fun building systems. The problem that we set out to solve is: how can
we run real-world Microservices-based systems on our local development
machines, managing provisioning, and orchestration of potentially
hundreds of services directly from a single command line tool, without
sacrificing productivity enablers like hot code reloading and instant
turnaround time?
During this talk, you’ll experience first-hand how much fun it can be
to develop large-scale Microservices-based systems. You will learn a
lot about what it takes to fail fast and recover and truly understand
the power of a fully integrated Microservices development environment.
A High-Performance Solution To Microservices UI Composition
So you have decided to go for Microservices and you want to achieve maximum autonomy for your teams. However, at the front end your services still have to be joined into a single page.Here you have two options: Either have a single UI layer which all teams depend on or let each service render its own UI and compose these UI pieces later on.
In the course of moving the Autoscout24 platform - one of Europe’s leading internet car portals - to an AWS-hosted Microservice architecture, we favored autonomy and therefore decided for the UI Composition approach. During this process we faced all the challenges of UI Composition, such as performance, consistency, isolation, and testing. Learn how we started off with a rather complex attempt and then managed to greatly improve and simplify our solution.
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
This document proposes an approach called Jigsaw for composing microservice user interfaces that balances team autonomy and page performance. Jigsaw defines pages as publicly accessible endpoints that include fragments from other services using server-side includes. The fragments adhere to contracts and can be cached. An Nginx proxy handles routing to services and uses modules like ngx_pagespeed to optimize and combine assets for improved page load performance when composing the user interface from multiple autonomous microservices.
The document discusses organizing CSS for maintainability and readability. It recommends dividing CSS into separate style sheets for different media types, rule types, or site sections. Within style sheets, related rules should be indented and grouped with comments. Declarations should be formatted consistently, either each on its own line or all on one line. Class and ID names should be meaningful. Informational comments can provide context. The goal is to structure CSS so it is easily understood by anyone viewing it.
Slides for plenary talk on "Content Management - Buy or Build?" given by Ricky Ranking and Gareth McLeese at the IWMW 2003 event held at the University of Kent on 11-13 June 2003.
See http://www.ukoln.ac.uk/web-focus/events/workshops/webmaster-2003/sessions/#talk-6
Developing High Performance Web Apps - CodeMash 2011
This document provides an overview of techniques for developing high performance web applications. It discusses why front-end performance matters, and outlines best practices for optimizing page load times, using responsive interfaces, loading and executing JavaScript efficiently, and accessing data. The presentation recommends tools for monitoring and improving performance, such as Firebug, Page Speed, and YSlow.
Turbocharge your development efforts your with a "hands on" introduction to quickly building apps using the MongoDB database as a service offering known as Atlas and the serverless / REST based application development environment known as Stitch. We'll begin with a brief introduction to MongoDB, Atlas, and Stitch. You will learn about 3 real world examples of two day prototypes and rapid production cycles. You will then create your own free MongoDB Atlas database as a service cluster. Then you will write your first Stitch application to put data into your database and query data out of it. You will learn how to enhance your application with serverless stitch functions and triggers. At the end of the 90 minute session you will have a hands on experience and good grasp of how to write custom serverless applications with MongoDB.
This document discusses developing sandboxed solutions in SharePoint. It covers setting up a sandbox development environment in Visual Studio 2010, building the feature structure and web template, making the solution locally installable, structuring the data, adding chrome, business logic, provisioning jQuery, custom web parts, views and connections. The session aims to teach the right approach to sandbox development and common issues.
Writing an extensible web testing framework ready for the cloud slide share
This document summarizes Mike Ensor's presentation on writing an extensible web testing framework ready for the cloud. The presentation covered:
- Introducing the Geb framework for browser testing in Groovy, which provides page objects and modules to reduce duplication.
- Extending Geb's inheritance model by subclassing page objects and modules to handle different scenarios like logged in vs logged out states.
- Making the testing framework extensible by inheriting test functionality between different implementations of a SaaS platform using Spock specifications. Features can be overridden and page objects dynamically swapped.
- Running tests in the cloud on continuous integration using a remote WebDriver to execute tests across different browsers without requiring a local browser
An introduction to Web Components describes why we should use web components for Web App development and how Polymer Javascript library from Google can help build web components faster.
This document discusses RequestReduce, a tool that automatically optimizes websites for performance by reducing the number of HTTP requests. It does this through CSS and JavaScript merging, minification, automatic sprite generation, caching headers, and synchronization across multiple servers with minimal customization needed. The document provides details on how RequestReduce works, its features, limitations, and ways to optimize and troubleshoot sites optimized with RequestReduce.
MVC 6 / ASP.NET 5 represent a fundamental shift for the ASP.NET framework. More than simply the next version, this is a complete rewrite and a break from the old System.Web that was central to all previous versions of ASP.NET. The result is a lighter-weight framework that supports cross platform development and deployment. In this session we explore some of the new building blocks in MVC 6 including Tag Helpers and View Components.
This document summarizes a MongoDB "Hands On" Stitch tutorial presentation. The presentation provided an overview of MongoDB Atlas and Stitch, demonstrated a basic blog tutorial to show how quickly applications can be built, and had attendees complete a hands-on tutorial creating an Atlas cluster and Stitch application. It discusses how the tutorial enabled developers at various companies and events.
Introduction to Paul Irish and Divya Manian's HTML5 Boilerplate project. HTML5 Boilerplate helps you to quickly get up and running with front-end web project.
oin this hands-on tutorial for an introduction to Stitch (MongoDB's serverless platform) and Atlas (MongoDB's database-as-a-service). Upon completing this session, you will have created an Atlas cluster and created your first stitch app. You will have a clear picture of how to rapidly develop and iterate on apps using MongoDB. In 90 minutes we will walk through three real-world prototypes and leave you with a number of learns you can apply to your own projects. Come learn about DBaaS, database triggers, and serverless applications with MongoDB!
Requirements
Laptop
Wifi Connection
Chrome or Firefox Browser
Text Editor
The document provides an introduction to ASP.NET MVC, including definitions of MVC and its components. It discusses the pros and cons of traditional ASP.NET WebForms compared to MVC. Key aspects of MVC like models, views, controllers, routing and HTML helpers are described at a high level. Popular MVC frameworks for different programming languages are also listed.
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...
This document provides an overview of how to create custom branding for SharePoint. It discusses the design process, using master pages and page layouts, and deploying branding solutions. The presenters are SharePoint MVPs who provide information on their backgrounds and expertise. They outline the SharePoint design process and discuss elements like vision, requirements, design, development, testing and deployment. Details are provided on master page history and functionality in ASP.NET and SharePoint. The use of controls, content placeholders and CSS are explained. Methods for creating and customizing SharePoint master pages are described. Finally, deployment options like sandboxed and farm solutions are covered.
All matter, no matter how complex, can be broken down into molecules which can be broken down further into atomic elements. All web interfaces can be broken down down the same way. Atomic Design provides a methodology for building an effective design system. It consists of five distint stages: atoms, molecules, organisms, templates and pages.
DrupalSouth 2015 - Performance: Not an Afterthought
Nick Santamaria's performance and scalability presentation from DrupalSouth 2015.
https://melbourne2015.drupal.org.au/session/performance-not-afterthought
Data Mesh in Practice - How Europe's Leading Online Platform for Fashion Goes...
A talk presented by Max Schultze from Zalando and Arif Wider from ThoughtWorks at NDC Oslo 2020.
Abstract:
The Data Lake paradigm is often considered the scalable successor of the more curated Data Warehouse approach when it comes to democratization of data. However, many who went out to build a centralized Data Lake came out with a data swamp of unclear responsibilities, a lack of data ownership, and sub-par data availability.
At Zalando - europe’s biggest online fashion retailer - we realised that accessibility and availability at scale can only be guaranteed when moving more responsibilities to those who pick up the data and have the respective domain knowledge - the data owners - while keeping only data governance and metadata information central. Such a decentralized and domain focused approach has recently been coined a Data Mesh.
The Data Mesh paradigm promotes the concept of Data Products which go beyond sharing of files and towards guarantees of quality and acknowledgement of data ownership.
This talk will take you on a journey of how we went from a centralized Data Lake to embrace a distributed Data Mesh architecture and will outline the ongoing efforts to make creation of data products as simple as applying a template.
From Monolithic to Microservices in 45 MinutesMongoDB
This document discusses moving from monolithic applications to microservices architectures. It begins by defining monolithic applications and how they can become difficult to scale. It then introduces the concepts of decoupling applications and microservices as an architecture where independent processes communicate via APIs. Some benefits discussed are improved scalability, release cycles, and fault tolerance. The document provides examples of microservices for tasks like text search and recommendations. It concludes by recommending starting with a monolithic approach and refactoring to microservices as needs require for scalability.
Anatomy of a Modern Node.js Application Architecture AppDynamics
This document provides an overview of the typical components and architecture of a modern Node.js application, including web and application servers, a queue, worker servers, databases, caches, and how to monitor transactions as they flow through the distributed system. It also describes how to configure AppDynamics to monitor errors, transactions, hardware resources, calls to external services and databases, and end user experience for Node.js applications.
Leapfrog into Serverless - a Deloitte-Amtrak Case Study | Serverless Confere...Gary Arora
This talk was delivered at the Serverless Conference in New York City in 2017. Deloitte and Amtrak built a Serverless Cloud-Native solution on AWS for real-time operational datastore and near real-time reporting data mart that modernized Amtrak's legacy systems & applications. With Serverless solutions, we are able leapfrog over several rungs of computing evolution.
Gary Arora is a Cloud Solutions Architect at Deloitte Consulting, specializing on Azure & AWS.
WSO2 is a global open source software company that provides a middleware platform for enterprise integration. This document discusses integration patterns that can be implemented using WSO2's middleware products, including the Enterprise Service Bus (ESB), which supports all enterprise integration patterns and can integrate disparate systems. Specific patterns covered include service orchestration, RESTful integration, SAP integration, guaranteed delivery, API facades, cloud-to-cloud and cloud-to-on-premise integration, high availability, and security patterns. Real-world use cases demonstrate how to achieve integration for connected businesses.
Get to know the new AMA application, the most important basic features of it, the differences between the Community and Enterprise version, and how you could extend it using our new plugin system. What the differences are between AMA and the APS, and what challenges we had during its development.
We consider a microservices architecture to achieve an end goal, not because it's "the cool thing to do". Every organization looking to adopt this architecture must realize (and adhere) to a set of foundational principles. Guided by those principles, we can correctly choose the technology to help support a microservices architecture and meet our end goals. This talk explains those core principles and gives you the tools needed for your microservices journey.
MS Insights Brazil 2015 containers and devopsDamien Caro
Talking about DevOps and containers at MS Insights Sao Paolo 2015.
Talking about containers being or not the solution to implementing DevOps practices ? This talk includes a demonstration that show the integration between Visual Studio Online, Docker Hub and GitHub for continuous integration and automated deployment.
This document discusses starting microservices with .NET. It begins with an introduction to microservices and the benefits of using them, such as improved scalability and resilience. It then covers common microservice patterns and technologies like API gateways, messaging, CQRS/DDD, and containers. Specific .NET tools are presented, including Ocelot for API gateways, RabbitMQ for messaging, MediatR for CQRS/events, and Docker for containers. The document emphasizes building microservices with failure in mind using techniques like retries, circuit breakers, and exponential backoff.
Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entityToni Jara
The presentation explains the journey from a monolithic architecture to Spring Cloud Microservices for application development inside a financial entity, along with the transition to DevOps strategies… a journey that has just begun…
Microservices with Node & Docker allow for building and deploying applications as independent services that can scale independently. Docker provides lightweight isolated environments for running services, while Node is well-suited as a platform due to its asynchronous and non-blocking I/O model and ease of building scalable network services. Together, Docker and Node enable a microservices architecture with improved developer productivity, deployment flexibility, and scalability compared to traditional monolithic applications.
This document provides an introduction to microservices architecture. It discusses why companies adopt the microservices style, how to design microservices, common patterns, and examples from Netflix.
The key points are:
1) Microservices architecture breaks applications into small, independent services that communicate over well-defined interfaces. This improves modularity, scalability, and allows independent deployments.
2) When designing microservices, services should be organized around business capabilities, have decentralized governance and data, and be designed to fail independently through patterns like circuit breakers.
3) Netflix is a leader in microservices and has open sourced many tools like Hystrix for latency handling and Eureka for service discovery that
MongoDB World 2019: Mastering MongoDB in KubernetesMongoDB
We will demonstrate why the MongoDB Enterprise Operator for Kubernetes is a game changer at Amadeus. The MongoDB Enterprise Operator for K8S is not just a resource for managing containers, it is a controller that extends the Kubernetes API.
THEFT-PROOF JAVA EE - SECURING YOUR JAVA EE APPLICATIONSMarkus Eisele
Security in applications is a never-ending story. Most of the knowledge about how to build secure applications is derived from knowledge and experience. And we've all done the same mistakes every Java EE developer does over and over again. But how to solve the real business requirements behind access and authorization with Java EE? Can I have a 15k rights matrix? Does that perform? How to secure the transport layer? How does session binding works? Can I implement 2-Factor-Authentication? And what about social integrations? This talk outlines the key capabilities of the Java EE platform and introduces the audience to additional frameworks and concepts which do help by implementing all kinds of security requirements in Java EE based applications.
How to deploy a Private Cloud based on WAP and NutanixTom Van Gramberen
Presented on May 28th, 2015 at TechDays Netherlands in The Hague:
The rise of virtualization and new applications has created pressure on IT departments to develop, deliver and maintain an application & storage infrastructure that is not only high performing, but also simple to manage, VM-centric and highly scalable. In this technical session, we'll discuss how to create the ideal infrastructure for Hyper-V and virtualized Windows applications, that is always available and literally invisible to the application teams. We will also explore a real world Windows Azure Pack deployment of the European Service Provider Synergics during this technical session. One of the Synergics’ architects will explain and demonstrate how they deployed a scalable, easy-to-manage cloud based on Windows Azure Pack.
Christian Posta is a principal middleware specialist and architect who has worked with large microservices architectures. He discusses why companies are moving to microservices and cloud platforms like Kubernetes and OpenShift. He covers characteristics of microservices like small autonomous teams and decentralized decision making. Posta also discusses breaking applications into independent services, shedding dependencies between teams, and using contracts and APIs for communication between services.
In this presentation we go over the motivations for wix.com R&D to move to a CI/CD/TDD model, how the model was implemented and the impact on Wix R&D. We will cover the tools used (developed in-house and 3rd party), change in methodologies, what we have learned during the transformation and the unexpected change in working with product and the rest of the company.
IPaaS 2.0: Fuse Integration Services (Robert Davies & Keith Babo)Red Hat Developers
Red Hat JBoss Fuse integration services delivers cloud-based integration based on OpenShift by Red Hat to deliver continuous delivery of tested, production-ready integration solutions. Utilizing a drag and drop, code-free UI and combining that with the integration power of Apache Camel, Fuse integration services is the next generation iPaaS. In this session, we'll walk you through why iPaaS is important, the current Fuse integration services roadmap, and the innovation happening in open source community projects to make this a reality.
This document summarizes Activiti 7 and Activiti Cloud. It discusses the core/non-cloud examples of embedding an Activiti engine into a single Java runtime. It then covers the key concepts of Activiti Cloud including connectors, runtime bundles, supporting services, and components. Examples are provided for security, processes, connectors, and the REST API. The document concludes by mentioning future directions for Activiti Cloud.
Stay productive while slicing up the monolith Markus Eisele
DevNexus 2017
Microservices-based architectures are en-vogue. The last couple of
years we have learned how the thought-leaders implement them, and
every other week we have heard about how containers and
Platform-as-a-Service offerings make them ultimately happen.
The problem is that the developers are almost forgotten and left alone
with provisioning and continuous delivery systems, containers and
resource schedulers, and frameworks and patterns to help slice
existing monoliths. How can we get back in control and efficiently
develop them without having to provision complete production-like
environments locally, by hand?
All the new buzzwords, frameworks, and hyped tools have made us forget
ourselves—Java developers–and what it means to be productive and have
fun building systems. The problem that we set out to solve is: how can
we run real-world Microservices-based systems on our local development
machines, managing provisioning, and orchestration of potentially
hundreds of services directly from a single command line tool, without
sacrificing productivity enablers like hot code reloading and instant
turnaround time?
During this talk, you’ll experience first-hand how much fun it can be
to develop large-scale Microservices-based systems. You will learn a
lot about what it takes to fail fast and recover and truly understand
the power of a fully integrated Microservices development environment.
A High-Performance Solution To Microservices UI CompositionAlexey Gravanov
So you have decided to go for Microservices and you want to achieve maximum autonomy for your teams. However, at the front end your services still have to be joined into a single page.Here you have two options: Either have a single UI layer which all teams depend on or let each service render its own UI and compose these UI pieces later on.
In the course of moving the Autoscout24 platform - one of Europe’s leading internet car portals - to an AWS-hosted Microservice architecture, we favored autonomy and therefore decided for the UI Composition approach. During this process we faced all the challenges of UI Composition, such as performance, consistency, isolation, and testing. Learn how we started off with a rather complex attempt and then managed to greatly improve and simplify our solution.
A High-Performance Solution to Microservice UI Composition @ XConf HamburgDr. Arif Wider
This document proposes an approach called Jigsaw for composing microservice user interfaces that balances team autonomy and page performance. Jigsaw defines pages as publicly accessible endpoints that include fragments from other services using server-side includes. The fragments adhere to contracts and can be cached. An Nginx proxy handles routing to services and uses modules like ngx_pagespeed to optimize and combine assets for improved page load performance when composing the user interface from multiple autonomous microservices.
Highly Maintainable, Efficient, and Optimized CSSZoe Gillenwater
The document discusses organizing CSS for maintainability and readability. It recommends dividing CSS into separate style sheets for different media types, rule types, or site sections. Within style sheets, related rules should be indented and grouped with comments. Declarations should be formatted consistently, either each on its own line or all on one line. Class and ID names should be meaningful. Informational comments can provide context. The goal is to structure CSS so it is easily understood by anyone viewing it.
Slides for plenary talk on "Content Management - Buy or Build?" given by Ricky Ranking and Gareth McLeese at the IWMW 2003 event held at the University of Kent on 11-13 June 2003.
See http://www.ukoln.ac.uk/web-focus/events/workshops/webmaster-2003/sessions/#talk-6
Developing High Performance Web Apps - CodeMash 2011Timothy Fisher
This document provides an overview of techniques for developing high performance web applications. It discusses why front-end performance matters, and outlines best practices for optimizing page load times, using responsive interfaces, loading and executing JavaScript efficiently, and accessing data. The presentation recommends tools for monitoring and improving performance, such as Firebug, Page Speed, and YSlow.
Turbocharge your development efforts your with a "hands on" introduction to quickly building apps using the MongoDB database as a service offering known as Atlas and the serverless / REST based application development environment known as Stitch. We'll begin with a brief introduction to MongoDB, Atlas, and Stitch. You will learn about 3 real world examples of two day prototypes and rapid production cycles. You will then create your own free MongoDB Atlas database as a service cluster. Then you will write your first Stitch application to put data into your database and query data out of it. You will learn how to enhance your application with serverless stitch functions and triggers. At the end of the 90 minute session you will have a hands on experience and good grasp of how to write custom serverless applications with MongoDB.
This document discusses developing sandboxed solutions in SharePoint. It covers setting up a sandbox development environment in Visual Studio 2010, building the feature structure and web template, making the solution locally installable, structuring the data, adding chrome, business logic, provisioning jQuery, custom web parts, views and connections. The session aims to teach the right approach to sandbox development and common issues.
Writing an extensible web testing framework ready for the cloud slide shareMike Ensor
This document summarizes Mike Ensor's presentation on writing an extensible web testing framework ready for the cloud. The presentation covered:
- Introducing the Geb framework for browser testing in Groovy, which provides page objects and modules to reduce duplication.
- Extending Geb's inheritance model by subclassing page objects and modules to handle different scenarios like logged in vs logged out states.
- Making the testing framework extensible by inheriting test functionality between different implementations of a SaaS platform using Spock specifications. Features can be overridden and page objects dynamically swapped.
- Running tests in the cloud on continuous integration using a remote WebDriver to execute tests across different browsers without requiring a local browser
An introduction to Web Components describes why we should use web components for Web App development and how Polymer Javascript library from Google can help build web components faster.
Website optimization with request reduceMatt Wrock
This document discusses RequestReduce, a tool that automatically optimizes websites for performance by reducing the number of HTTP requests. It does this through CSS and JavaScript merging, minification, automatic sprite generation, caching headers, and synchronization across multiple servers with minimal customization needed. The document provides details on how RequestReduce works, its features, limitations, and ways to optimize and troubleshoot sites optimized with RequestReduce.
MVC 6 / ASP.NET 5 represent a fundamental shift for the ASP.NET framework. More than simply the next version, this is a complete rewrite and a break from the old System.Web that was central to all previous versions of ASP.NET. The result is a lighter-weight framework that supports cross platform development and deployment. In this session we explore some of the new building blocks in MVC 6 including Tag Helpers and View Components.
This document summarizes a MongoDB "Hands On" Stitch tutorial presentation. The presentation provided an overview of MongoDB Atlas and Stitch, demonstrated a basic blog tutorial to show how quickly applications can be built, and had attendees complete a hands-on tutorial creating an Atlas cluster and Stitch application. It discusses how the tutorial enabled developers at various companies and events.
Introduction to Paul Irish and Divya Manian's HTML5 Boilerplate project. HTML5 Boilerplate helps you to quickly get up and running with front-end web project.
oin this hands-on tutorial for an introduction to Stitch (MongoDB's serverless platform) and Atlas (MongoDB's database-as-a-service). Upon completing this session, you will have created an Atlas cluster and created your first stitch app. You will have a clear picture of how to rapidly develop and iterate on apps using MongoDB. In 90 minutes we will walk through three real-world prototypes and leave you with a number of learns you can apply to your own projects. Come learn about DBaaS, database triggers, and serverless applications with MongoDB!
Requirements
Laptop
Wifi Connection
Chrome or Firefox Browser
Text Editor
Asp.net mvc presentation by Nitin SawantNitin Sawant
The document provides an introduction to ASP.NET MVC, including definitions of MVC and its components. It discusses the pros and cons of traditional ASP.NET WebForms compared to MVC. Key aspects of MVC like models, views, controllers, routing and HTML helpers are described at a high level. Popular MVC frameworks for different programming languages are also listed.
Popping the Hood: How to Create Custom SharePoint Branding by Randy Drisgill ...SPTechCon
This document provides an overview of how to create custom branding for SharePoint. It discusses the design process, using master pages and page layouts, and deploying branding solutions. The presenters are SharePoint MVPs who provide information on their backgrounds and expertise. They outline the SharePoint design process and discuss elements like vision, requirements, design, development, testing and deployment. Details are provided on master page history and functionality in ASP.NET and SharePoint. The use of controls, content placeholders and CSS are explained. Methods for creating and customizing SharePoint master pages are described. Finally, deployment options like sandboxed and farm solutions are covered.
All matter, no matter how complex, can be broken down into molecules which can be broken down further into atomic elements. All web interfaces can be broken down down the same way. Atomic Design provides a methodology for building an effective design system. It consists of five distint stages: atoms, molecules, organisms, templates and pages.
DrupalSouth 2015 - Performance: Not an AfterthoughtNick Santamaria
Nick Santamaria's performance and scalability presentation from DrupalSouth 2015.
https://melbourne2015.drupal.org.au/session/performance-not-afterthought
Similar to An Unexpected Solution to Microservices UI Composition (20)
Data Mesh in Practice - How Europe's Leading Online Platform for Fashion Goes...Dr. Arif Wider
A talk presented by Max Schultze from Zalando and Arif Wider from ThoughtWorks at NDC Oslo 2020.
Abstract:
The Data Lake paradigm is often considered the scalable successor of the more curated Data Warehouse approach when it comes to democratization of data. However, many who went out to build a centralized Data Lake came out with a data swamp of unclear responsibilities, a lack of data ownership, and sub-par data availability.
At Zalando - europe’s biggest online fashion retailer - we realised that accessibility and availability at scale can only be guaranteed when moving more responsibilities to those who pick up the data and have the respective domain knowledge - the data owners - while keeping only data governance and metadata information central. Such a decentralized and domain focused approach has recently been coined a Data Mesh.
The Data Mesh paradigm promotes the concept of Data Products which go beyond sharing of files and towards guarantees of quality and acknowledgement of data ownership.
This talk will take you on a journey of how we went from a centralized Data Lake to embrace a distributed Data Mesh architecture and will outline the ongoing efforts to make creation of data products as simple as applying a template.
Continuous Intelligence: Keeping your AI Application in ProductionDr. Arif Wider
A talk by Arif Wider & Emily Gorcenski presented at NDC Porto '20
Abstract:
It is already challenging to transition a machine learning model or AI system from the research space to production, and maintaining that system alongside ever-changing data is an even greater challenge. In software engineering, Continuous Delivery practices have been developed to ensure that developers can adapt, maintain, and update software and systems cheaply and quickly, enabling release cycles on the scale of hours or days instead of weeks or months. Nevertheless, in the data science world Continuous Delivery is rarely been applied holistically.
This is partly due to different workflows: data scientists regularly work on whole sets of hypotheses, whereas software engineers work more linearly even when evaluating multiple implementation alternatives. Therefore, existing software engineering practices cannot be applied as-is to machine learning projects. Learn how we used our expertise in both fields to adapt practices and tools to allow for Continuous Intelligence–the practice of delivering AI applications continuously.
Continuous Intelligence: Keeping Your AI Application in Production (NDC Sydne...Dr. Arif Wider
A talk about applying Continuous Delivery to Machine Learning (CD4ML) presented by Arif Wider from ThoughtWorks at NDC Sydney Conference 2019.
Abstract:
It is already challenging to transition a machine learning model or AI system from the research space to production, and maintaining that system alongside ever-changing data is an even greater challenge. In software engineering, Continuous Delivery practices have been developed to ensure that developers can adapt, maintain, and update software and systems cheaply and quickly, enabling release cycles on the scale of hours or days instead of weeks or months. Nevertheless, in the data science world Continuous Delivery is rarely been applied holistically.
This is partly due to different workflows: data scientists regularly work on whole sets of hypotheses, whereas software engineers work more linearly even when evaluating multiple implementation alternatives. Therefore, existing software engineering practices cannot be applied as-is to machine learning projects. Learn how we used our expertise in both fields to adapt practices and tools to allow for Continuous Intelligence–the practice of delivering AI applications continuously.
Continuous Intelligence: Moving Machine Learning into Production ReliablyDr. Arif Wider
A workshop by Danilo Sato, Christoph Windheuser, Emily Gorcenski, and Arif Wider, given at Strata Data Conference 2019 in London.
Abstract:
So you want to include a machine learning component in your IT systems? The process is a little more involved than clicking through an AI tutorial on your laptop. It’s not just the first working model you run that you need to consider; you also need to think about things like integration, scaling, and testing. What’s more, postlaunch, you’ll want to continuously adapt your model to respond to the changing environment.
ThoughtWorks pioneered continuous delivery—a set of tools and processes that ensure that software under development can be reliably released to production at any time and with high frequency.
Danilo Sato and Christoph Windheuser demonstrate how to apply continuous delivery to machine learning—what’s known as continuous intelligence. In a live scenario, you’ll change a machine learning model in a development environment, test its new performance, and, depending on the outcome, automatically deploy the new model into a production environment. The tech stack for this scenario will be Python, DVC (Data Science Version Control), and GoCD.
Continuous Intelligence: Keeping your AI Application in ProductionDr. Arif Wider
A talk by Emily Gorcenski and Arif Wider presented a Strata Data Conference 2019 in London.
Abstract:
It’s already challenging to transition a machine learning model or AI system from the research space to production, and maintaining that system alongside ever-changing data is an even greater challenge. In software engineering, continuous delivery practices have been developed to ensure that developers can adapt, maintain, and update software and systems cheaply and quickly, enabling release cycles on the scale of hours or days instead of weeks or months.
Nevertheless, in the data science world, continuous delivery is rarely applied holistically—due in part to different workflows: data scientists regularly work on whole sets of hypotheses, whereas software engineers work more linearly even when evaluating multiple implementation alternatives. Therefore, existing software engineering practices cannot be applied as is to machine learning projects.
Arif Wider and Emily Gorcenski explore continuous delivery (CD) for AI/ML along with case studies for applying CD principles to data science workflows. Join in to learn how they drew on their expertise to adapt practices and tools to allow for continuous intelligence—the practice of delivering AI applications continuously.
DataDevOps: A Manifesto for a DevOps-like Culture Shift in Data & AnalyticsDr. Arif Wider
A talk by Sebastian Herold & Dr. Arif Wider at TDWI 2018 Munich.
Abstract:
More and more companies migrate their monolithic applications to a microservices architecture. However, maintaining a consistent and usable data landscape has only become more challenging by this: huge amounts of structured and unstructured data, and hundreds of data sources.
Furthermore, data-driven product development multiplies the analytics requirements: every product team needs constantly updated and specially tailored metrics which often combine product specific data with company wide data.
Having a centralized data team does not scale in this setting as it becomes the bottleneck between data producers and data consumers.
We created a Manifesto based on five general themes which break with traditional separation of roles and show a path how to deal with distributed data in a federal and scalable fashion. This leads to DataDev: a culture shift similar to DevOps in which application developers own their data and take over responsibilities for data & analytics.
Learn about our experiences and best practices with facilitating this cultural transformation at Zalando, one of Europe's largest online fashion platforms.
DataDevOps: A Manifesto for a DevOps-like Culture Shift in Data & AnalyticsDr. Arif Wider
A talk given by Dr. Arif Wider (ThoughtWorks) and Sebastian Herold (Zalando) at OOP 2018 in Munich.
Abstract:
More and more companies migrate their monolithic applications to a microservices architecture. However, maintaining a consistent and usable data landscape has only become more challenging by this: huge amounts of structured and unstructured data, and hundreds of data sources.
Furthermore, data-driven product development multiplies the analytics requirements: every product team needs constantly updated and specially tailored metrics which often combine product specific data with company wide data.
Having a centralized data team does not scale in this setting as it becomes the bottleneck between data producers and data consumers.
We created a Manifesto of seven principles which break with traditional separation of roles and show a path how to deal with distributed data in a federal and scalable fashion. This leads to DataDev: a culture shift similar to DevOps in which application developers own their data and take over responsibilities for data & analytics.
Learn about our experiences and best practices with facilitating this cultural transformation at Scout24, the provider of Europe’s largest online markets for cars and real estate.
DataDevOps - A Manifesto on Shared Data Responsibility in Times of MicroservicesDr. Arif Wider
A talk by Sebastian Herold (Scout24) and Arif Wider (ThoughtWorks)
Abstract:
More and more companies successfully migrate their monolithic applications to a Microservices architecture. However, maintaining a consistent and usable data landscape has only become more challenging by this: unstructured data, huge amounts of data, and hundreds of data sources. Having a centralized data team does not scale in this setting as it becomes the bottleneck between application developers and business analysts.
We created a Data Manifesto of seven principles which break with traditional role separations and show a path how to deal with distributed data in a federal and scalable fashion. This leads to DataDevOps: a culture where application developers also own their data. Learn about the experiences we made with facilitating this cultural transformation at Scout24, the provider of Europe’s largest online markets for cars and real estate.
Predictive Analytics for Vehicle Price Prediction - Delivered Continuously at...Dr. Arif Wider
This document discusses predictive analytics for vehicle price prediction delivered continuously at AutoScout24. It describes AutoScout24's use of a random forest model for price prediction and their approach to automatically generating Java code from the R-based model to deploy it as a high-performance web application via a continuous delivery pipeline. Key lessons learned include forming cross-functional data science and engineering teams, setting up early usage reporting to improve the product, and addressing challenges of generating large amounts of Java code like optimizing garbage collection.
Choose our Linux Web Hosting for a seamless and successful online presencerajancomputerfbd
Our Linux Web Hosting plans offer unbeatable performance, security, and scalability, ensuring your website runs smoothly and efficiently.
Visit- https://onliveserver.com/linux-web-hosting/
Details of description part II: Describing images in practice - Tech Forum 2024BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and transcript: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Chris Swan
Have you noticed the OpenSSF Scorecard badges on the official Dart and Flutter repos? It's Google's way of showing that they care about security. Practices such as pinning dependencies, branch protection, required reviews, continuous integration tests etc. are measured to provide a score and accompanying badge.
You can do the same for your projects, and this presentation will show you how, with an emphasis on the unique challenges that come up when working with Dart and Flutter.
The session will provide a walkthrough of the steps involved in securing a first repository, and then what it takes to repeat that process across an organization with multiple repos. It will also look at the ongoing maintenance involved once scorecards have been implemented, and how aspects of that maintenance can be better automated to minimize toil.
YOUR RELIABLE WEB DESIGN & DEVELOPMENT TEAM — FOR LASTING SUCCESS
WPRiders is a web development company specialized in WordPress and WooCommerce websites and plugins for customers around the world. The company is headquartered in Bucharest, Romania, but our team members are located all over the world. Our customers are primarily from the US and Western Europe, but we have clients from Australia, Canada and other areas as well.
Some facts about WPRiders and why we are one of the best firms around:
More than 700 five-star reviews! You can check them here.
1500 WordPress projects delivered.
We respond 80% faster than other firms! Data provided by Freshdesk.
We’ve been in business since 2015.
We are located in 7 countries and have 22 team members.
With so many projects delivered, our team knows what works and what doesn’t when it comes to WordPress and WooCommerce.
Our team members are:
- highly experienced developers (employees & contractors with 5 -10+ years of experience),
- great designers with an eye for UX/UI with 10+ years of experience
- project managers with development background who speak both tech and non-tech
- QA specialists
- Conversion Rate Optimisation - CRO experts
They are all working together to provide you with the best possible service. We are passionate about WordPress, and we love creating custom solutions that help our clients achieve their goals.
At WPRiders, we are committed to building long-term relationships with our clients. We believe in accountability, in doing the right thing, as well as in transparency and open communication. You can read more about WPRiders on the About us page.
Scaling Connections in PostgreSQL Postgres Bangalore(PGBLR) Meetup-2 - MydbopsMydbops
This presentation, delivered at the Postgres Bangalore (PGBLR) Meetup-2 on June 29th, 2024, dives deep into connection pooling for PostgreSQL databases. Aakash M, a PostgreSQL Tech Lead at Mydbops, explores the challenges of managing numerous connections and explains how connection pooling optimizes performance and resource utilization.
Key Takeaways:
* Understand why connection pooling is essential for high-traffic applications
* Explore various connection poolers available for PostgreSQL, including pgbouncer
* Learn the configuration options and functionalities of pgbouncer
* Discover best practices for monitoring and troubleshooting connection pooling setups
* Gain insights into real-world use cases and considerations for production environments
This presentation is ideal for:
* Database administrators (DBAs)
* Developers working with PostgreSQL
* DevOps engineers
* Anyone interested in optimizing PostgreSQL performance
Contact info@mydbops.com for PostgreSQL Managed, Consulting and Remote DBA Services
7 Most Powerful Solar Storms in the History of Earth.pdfEnterprise Wired
Solar Storms (Geo Magnetic Storms) are the motion of accelerated charged particles in the solar environment with high velocities due to the coronal mass ejection (CME).
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionBert Blevins
Cybersecurity is a major concern in today's connected digital world. Threats to organizations are constantly evolving and have the potential to compromise sensitive information, disrupt operations, and lead to significant financial losses. Traditional cybersecurity techniques often fall short against modern attackers. Therefore, advanced techniques for cyber security analysis and anomaly detection are essential for protecting digital assets. This blog explores these cutting-edge methods, providing a comprehensive overview of their application and importance.
Comparison Table of DiskWarrior Alternatives.pdfAndrey Yasko
To help you choose the best DiskWarrior alternative, we've compiled a comparison table summarizing the features, pros, cons, and pricing of six alternatives.
UiPath Community Day Kraków: Devs4Devs ConferenceUiPathCommunity
We are honored to launch and host this event for our UiPath Polish Community, with the help of our partners - Proservartner!
We certainly hope we have managed to spike your interest in the subjects to be presented and the incredible networking opportunities at hand, too!
Check out our proposed agenda below 👇👇
08:30 ☕ Welcome coffee (30')
09:00 Opening note/ Intro to UiPath Community (10')
Cristina Vidu, Global Manager, Marketing Community @UiPath
Dawid Kot, Digital Transformation Lead @Proservartner
09:10 Cloud migration - Proservartner & DOVISTA case study (30')
Marcin Drozdowski, Automation CoE Manager @DOVISTA
Pawel Kamiński, RPA developer @DOVISTA
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
09:40 From bottlenecks to breakthroughs: Citizen Development in action (25')
Pawel Poplawski, Director, Improvement and Automation @McCormick & Company
Michał Cieślak, Senior Manager, Automation Programs @McCormick & Company
10:05 Next-level bots: API integration in UiPath Studio (30')
Mikolaj Zielinski, UiPath MVP, Senior Solutions Engineer @Proservartner
10:35 ☕ Coffee Break (15')
10:50 Document Understanding with my RPA Companion (45')
Ewa Gruszka, Enterprise Sales Specialist, AI & ML @UiPath
11:35 Power up your Robots: GenAI and GPT in REFramework (45')
Krzysztof Karaszewski, Global RPA Product Manager
12:20 🍕 Lunch Break (1hr)
13:20 From Concept to Quality: UiPath Test Suite for AI-powered Knowledge Bots (30')
Kamil Miśko, UiPath MVP, Senior RPA Developer @Zurich Insurance
13:50 Communications Mining - focus on AI capabilities (30')
Thomasz Wierzbicki, Business Analyst @Office Samurai
14:20 Polish MVP panel: Insights on MVP award achievements and career profiling
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfNeo4j
Presented at Gartner Data & Analytics, London Maty 2024. BT Group has used the Neo4j Graph Database to enable impressive digital transformation programs over the last 6 years. By re-imagining their operational support systems to adopt self-serve and data lead principles they have substantially reduced the number of applications and complexity of their operations. The result has been a substantial reduction in risk and costs while improving time to value, innovation, and process automation. Join this session to hear their story, the lessons they learned along the way and how their future innovation plans include the exploration of uses of EKG + Generative AI.
Quantum Communications Q&A with Gemini LLM. These are based on Shannon's Noisy channel Theorem and offers how the classical theory applies to the quantum world.
Transcript: Details of description part II: Describing images in practice - T...BookNet Canada
This presentation explores the practical application of image description techniques. Familiar guidelines will be demonstrated in practice, and descriptions will be developed “live”! If you have learned a lot about the theory of image description techniques but want to feel more confident putting them into practice, this is the presentation for you. There will be useful, actionable information for everyone, whether you are working with authors, colleagues, alone, or leveraging AI as a collaborator.
Link to presentation recording and slides: https://bnctechforum.ca/sessions/details-of-description-part-ii-describing-images-in-practice/
Presented by BookNet Canada on June 25, 2024, with support from the Department of Canadian Heritage.
Are you interested in dipping your toes in the cloud native observability waters, but as an engineer you are not sure where to get started with tracing problems through your microservices and application landscapes on Kubernetes? Then this is the session for you, where we take you on your first steps in an active open-source project that offers a buffet of languages, challenges, and opportunities for getting started with telemetry data.
The project is called openTelemetry, but before diving into the specifics, we’ll start with de-mystifying key concepts and terms such as observability, telemetry, instrumentation, cardinality, percentile to lay a foundation. After understanding the nuts and bolts of observability and distributed traces, we’ll explore the openTelemetry community; its Special Interest Groups (SIGs), repositories, and how to become not only an end-user, but possibly a contributor.We will wrap up with an overview of the components in this project, such as the Collector, the OpenTelemetry protocol (OTLP), its APIs, and its SDKs.
Attendees will leave with an understanding of key observability concepts, become grounded in distributed tracing terminology, be aware of the components of openTelemetry, and know how to take their first steps to an open-source contribution!
Key Takeaways: Open source, vendor neutral instrumentation is an exciting new reality as the industry standardizes on openTelemetry for observability. OpenTelemetry is on a mission to enable effective observability by making high-quality, portable telemetry ubiquitous. The world of observability and monitoring today has a steep learning curve and in order to achieve ubiquity, the project would benefit from growing our contributor community.
Quality Patents: Patents That Stand the Test of TimeAurora Consulting
Is your patent a vanity piece of paper for your office wall? Or is it a reliable, defendable, assertable, property right? The difference is often quality.
Is your patent simply a transactional cost and a large pile of legal bills for your startup? Or is it a leverageable asset worthy of attracting precious investment dollars, worth its cost in multiples of valuation? The difference is often quality.
Is your patent application only good enough to get through the examination process? Or has it been crafted to stand the tests of time and varied audiences if you later need to assert that document against an infringer, find yourself litigating with it in an Article 3 Court at the hands of a judge and jury, God forbid, end up having to defend its validity at the PTAB, or even needing to use it to block pirated imports at the International Trade Commission? The difference is often quality.
Quality will be our focus for a good chunk of the remainder of this season. What goes into a quality patent, and where possible, how do you get it without breaking the bank?
** Episode Overview **
In this first episode of our quality series, Kristen Hansen and the panel discuss:
⦿ What do we mean when we say patent quality?
⦿ Why is patent quality important?
⦿ How to balance quality and budget
⦿ The importance of searching, continuations, and draftsperson domain expertise
⦿ Very practical tips, tricks, examples, and Kristen’s Musts for drafting quality applications
https://www.aurorapatents.com/patently-strategic-podcast.html
Measuring the Impact of Network Latency at TwitterScyllaDB
Widya Salim and Victor Ma will outline the causal impact analysis, framework, and key learnings used to quantify the impact of reducing Twitter's network latency.
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc
Six months into 2024, and it is clear the privacy ecosystem takes no days off!! Regulators continue to implement and enforce new regulations, businesses strive to meet requirements, and technology advances like AI have privacy professionals scratching their heads about managing risk.
What can we learn about the first six months of data privacy trends and events in 2024? How should this inform your privacy program management for the rest of the year?
Join TrustArc, Goodwin, and Snyk privacy experts as they discuss the changes we’ve seen in the first half of 2024 and gain insight into the concrete, actionable steps you can take to up-level your privacy program in the second half of the year.
This webinar will review:
- Key changes to privacy regulations in 2024
- Key themes in privacy and data governance in 2024
- How to maximize your privacy program in the second half of 2024
Kief Morris rethinks the infrastructure code delivery lifecycle, advocating for a shift towards composable infrastructure systems. We should shift to designing around deployable components rather than code modules, use more useful levels of abstraction, and drive design and deployment from applications rather than bottom-up, monolithic architecture and delivery.
4. Project Tatsu: Goals
4
• Attract talent
• Reduce time to market
• Release new features quickly (for test or production)
• Enable teams to innovate independently
5. Autonomous Teams, Loosely Coupled Services
5
Allow for cross-functional teams that are able to
independently create, improve, and run their services.
Avoid tight coupling as much as possible!
6. Don't Compromise Page Performance
6
• Achieve PageSpeed Insights score of 95+
• Strive for low latency
• Benefit from caching whereever possible
tricky to combine with
high team autonomy
9. API Gateway Pattern - Drawbacks
9
• No independent feature releases possible
• Web UI monolith
• API monolith
• Danger of adding more and more logic to the API layer
• Duplicated controller logic in the API gateway
12. Challenges of UI Composition
12
• Combine HTML
• Let services deliver their own styles and JavaScript
• HTML and asset versions must be consistent
• Page structure must not break page performance
• Request latency needs to stay low
• Independent and integration testing of UI components
15. ESI Include
15
<html>
<head>
<title>AutoScout24</title>
<!-- CSS of page -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
</head>
<body>
<!-- ESI include of header -->
<esi:include src="http://content.as24.com/fragment/header_de_DE" />
Lorem ipsum....
<!-- JavaScript of page -->
<script src="/assets/home/66ee72f9-main.min.js"></script>
</body>
</html>
16. ESI Include Resolved
16
<html>
<head>
<title>AutoScout24</title>
<!-- CSS of page -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
</head>
<body>
<!-- CSS of fragment -->
<link rel="stylesheet" href="http://content.as24.com/assets/08ffaf28-main.min.css" />
<ul><li>Home</li><li>Search</li><li>Sell</li></ul>
<!-- JavaScript of fragment -->
<script src="http://content.as24.com/assets/26ed612f-main.min.js"></script>
Lorem ipsum....
<!-- JavaScript of page -->
<script src="/assets/home/66ee72f9-main.min.js"></script>
</body>
</html>
17. Multiple ESI Includes
17
<html>
<head>
<title>AutoScout24</title>
<!-- CSS of page -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
<!-- ESI include for header CSS -->
<esi:include src="http://content.example.com/fragment/header_styles" />
</head>
<body>
<!-- ESI include for header -->
<esi:include src="http://content.example.com/fragment/header_de_DE" />
Lorem ipsum....
<!-- JavaScript for page -->
<script src="/assets/home/66ee72f9-main.min.js"></script>
<!-- ESI include for header JavaScript -->
<esi:include src="http://content.example.com/fragment/header_scripts" />
</body>
</html>
18. Multiple ESI Includes Resolved
18
<html>
<head>
<title>AutoScout24</title>
<!-- CSS for page -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
<!-- CSS for header -->
<link rel="stylesheet" href="http://content.example.com/assets/08ffaf28-main.css" />
</head>
<body>
<ul><li>Home</li><li>Search</li><li>Sell</li></ul>
Lorem ipsum....
<!-- JavaScript for page -->
<script src="/assets/home/66ee72f9-main.min.js"></script>
<!-- JavaScript for header -->
<script src="http://content.example.com/assets/26ed612f-main.js"></script>
</body>
</html>
19. Varnish & ESI
Composition Issues
19
• Bad page performance because of page structure
• Tries to optimize the page structure led to increased
complexity regarding the asset handling
• High burden on the content providing teams
20. Varnish & ESI
Additional Issues
20
• Combining assets with ESI adds lots of complexity
• Varnish cannot strong cache assets combined with ESI
• AWS ELB as Varnish backend wasn’t working (multiple
short-lived IPs)
21. Requirements for a better solution
21
• References to asset URIs need to be included in HTML
snippet
• Therefore post-processing of references is required
• Support for combined assets
• Support for inlining CSS/JS
• Support for shared cache between instances
29. Pages
29
are publicly accessible
get called from the client
include fragments
could be cacheable
define contracts
are parts of a page
get called from Nginx SSI
could include fragments
should be cacheable
adhere to contracts
Fragments
30. SSI Include
30
<html>
<head>
<title>AutoScout24</title>
<!-- Minified and combined css used by this page (not by the fragments) -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
</head>
<body>
<!--#include virtual="/headerservice/fragment/header_de_DE" -->
Lorem ipsum....
<!-- Minified and combined javascript used by this page -->
<script type="text/javascript" src="/assets/home/66ee72f9-main.min.js"></script>
</body>
</html>
31. SSI Include Resolved
31
<html>
<head>
<title>AutoScout24</title>
<!-- Minified and combined css used by this page (not by the fragments) -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
</head>
<body>
<head>
<!-- Minified and combined css used by this fragment -->
<link rel="stylesheet" href="/assets/headerservice/08ffaf28-main.min.css" />
</head>
<ul><li>Home</li><li>Search</li><li>Sell</li></ul>
<script type="text/javascript" src="/assets/headerservice/26ed612f-main.js"></script>
Lorem ipsum....
<!-- Minified and combined javascript used by this page -->
<script type="text/javascript" src="/assets/home/66ee72f9-main.min.js"></script>
</body>
</html>
32. ngx_pagespeed: combine heads
32
<html>
<head>
<title>AutoScout24</title>
<!-- Minified and combined css used by this page (not by the fragments) -->
<link rel="stylesheet" href="/assets/home/ebacb8194-main.min.css" />
<link rel="stylesheet" href="/assets/headerservice/08ffaf28-main.min.css" />
</head>
<body>
<ul><li>Home</li><li>Search</li><li>Sell</li></ul>
<script type="text/javascript" src="/assets/headerservice/26ed612f-main.js"></script>
Lorem ipsum....
<!-- Minified and combined javascript used by this page -->
<script type="text/javascript" src="/assets/home/66ee72f9-main.min.js"></script>
</body>
</html>
38. Pagespeed Cache
38
• Caches generated assets
• memcached (ElastiCache on AWS)
• state is externalized to AWS
• allows for stateless web server machines
• no cache synchronization
• no cold cache
39. nginx Proxy Cache
39
• Caches responses from upstream services
• Respects cache headers from upstream services
• Supports cache key control via Vary Header
• AWS ElastiCache (via ngx_srcache module)
48. Jigsaw Best Practice Analyzer
48
• Checks HTML code for anti-patterns
• defer async
• page barriers (inline scripts)
• CSS outside of <head>
• stylesheet refs with different attributes
• Assets not located in /assets/
• Can run in a deployment pipeline
49. Things yet to be solved
49
• Authentication is not in scope yet
• A/B testing of fragments
• JavaScript integration / interaction
• Bootstrap fragment / common things
• Native mobile apps
51. Features of the UI Composition Solution
51
• Teams are in full control of their service's UI and do
not need rely on others when changing it
• Fragments have a simple structure with head, body
and script parts
• Page performance is not compromised
• Jigsaw serves as an effective cache layer
• Fragments can be tested in isolation, and in
integration with other pages or fragments
52. Learnings and Practices
52
• Try to keep composition layer as simple as possible!
• Stick to HTTP protocol use cases
• Allow services to control Jigsaw's caching behavior
• Isolate fragments by CSS and JS packages
• Try hard to have good documentation
> Arif
Before we go into the topic of UI composition, I’d like to give you some background about our motivation and the context in which we developed our solution to UI composition.
And that context is a project that we call Tatsu.
Tatsu means dragon (logo), because the project is nothing less than a complete rewrite of the AS24 platform, which is live in 18 countries across Europe, and therefore we compare the project with a dangerous but powerful dragon.
In this project, which started a bit more than a year ago, we are doing 5 things at the same time.
We are breaking the old rather monolithic system into a set of independent microservices.
We are moving from a self hosted system to a completely cloud hosted system, using Amazon Web Services.
We are moving from a Microsoft .NET stack to a Linux- and JVM-based tech stack.
Because that is not enough, we are also changing the organisational structure, so that it reflects the Microservice approach.
That means, we move from multiple product engineering teams that rely on a few operations and platform teams to cross-functional, autonomous teams that have enough ops knowledge to run their own services. This is depicted by those gradients here.
Finally, as we are rebuilding everything, we want to make sure that we come out of the whole process with a new shiny AS24 page that contains only those features that are actually useful.
Now, this whole project is obviously a huge effort, so why are we doing it?
One of the reasons is to attract talented developers, which was harder with the old .NET tech stack
However, the main reason is to reduce time to market, so that we can respond to user needs more quickly
For this it is important, that new features can be released very quickly, also for being able to do lots of A/B testing to get early user feedback
The idea here is to be able to think in minutes for feature to be released instead of thinking in days
Now for this to be possible, teams must be enabled to innovate independently
We believe that a key to achieve this are autonomous teams, that are able to independently ...
Therefore, we believe that it is crucial to avoid any form of tight coupling as much as possible
If a team wants to improve their own service but must wait for another team to release something in order to be able to do so then there is no real autonomy.
In fact, we value this team autonomy so much, that we also accept certain trade-offs
E.g., we often rather copy some code around than to create tight coupling by introducing a shared library or shared infrastructure
At the same time, we do not want to compromise page performance.
In case you do not know it, Pagespeed Insights is a tool by Google that analyzes the structure of a page in terms of how fast it can be rendered, in particular on a mobile browser.
...and the score goes up to 100, and is considered good from 85 upwards.
This means, that we heavily rely on different cache layers and that our pages must not contain blocking content.
In the context of Microservices, it is a bit tricky to achieve both high page speed and high team autonomy.
To explain this, I am now going to present you two different ways how to generally approach this problem.
And then afterwards Johannes will go more into detail on how we actually tried to solve it.
The first one is the API Gateway pattern
In this example you see that there are already several backend services such as...
So the monolith is already broken down into several independent services at the back end
However, in the frontend, there is still one single web application that takes care of the whole web UI, and talks to the different backend APIs.
E.g., this red UI component here displays some content that is provided by the homepage service, whereas this
In order to avoid that the web app needs to start several separate requests to several backend services just to perform a single action, it is generally a good idea to introduce a gateway layer that aggregates those requests to backend services.
This way, the number of requests is reduced which is particularly important when using a mobile device to view the page.
The API Gateway pattern is also particularly useful to deal with native mobile apps, however, those won't be in the focus of this talk today.
Now, of course, in this scenario it is is also fairly easy to optimize the performance of the page because all the UI components belong to one application.
However, there are some drawbacks of applying this pattern from which, for us, the most severe is that independent feature releases are no longer possible (as long as they contain UI changes)
Instead, in the worst case three teams are involved and need to be coordinated when changing a feature: the backend service team, the API gateway layer team, and the web app team
One could say that the API Gateway pattern one goes only half way to split the monolith, i.e., only in the backend
There are other drawbacks such as...
but because team autonomy is one of the main reasons we went for Microservices in the first place, this issue made the API Gateway pattern no option for us
Instead we went for another pattern and that is the UI composition pattern
This looks as follows: Each service delivers its own UI component, e.g., red home page
Those UI components are later composed to a single web page
This way, each team can change their backend and their UI independently
We also often speak of vertical slices here, because there is no layered architecture anymore and each service can contain a backend, a UI, and everything in between
However, there are quite few challenges that come with this approach
... each part of the page could compromise page performance by introducing render blocking content
... the loading time of the page depends on its slowest component
Jo
why are we telling you this -> to narrow down the topic to the core questions to solve
Varnish test setup infrastructure
Varnish in front of services
no service registration, just loading content from referenced URLs
Page, therefore HTML tag
ESI include syntax
styles and scripts already minified by service
ESI resolved = include replaced with fragment (by Varnish)
fragment has its own minified styles and scripts in there
also its own script section at its bottom
need to have full qualified references to assets
very bad page speed
One ESI include for header styles
One ESI include for header fragment
One ESI include for header scripts
Multiple ESI resolved = include replaced with fragment (by Varnish)
One ESI include for header styles
One ESI include for header fragment
One ESI include for header scripts
better page speed, but still not perfect (no combination etc)
big problem: TTL of cached includes are not synchronized. Version mismatches!
> Arif
So before showing an example how this actually looks in code
I have to explain that we conceptually distinguish between what we call a page and what we call a fragment
...and does not know the original request
...and this team is responsible for the performance and the stability of the page
So when this page includes fragments, this team has to define a contract with the providers of this fragment
The fragment on the other hand needs to obey this contract and behave well
Now let's look at a simple example page
Page, therefore HTML tag+ head and body
styles already minified by service
SSI include syntax
SSI resolved = include replaced with fragment (by Nginx)
fragment has its own head, with its own minified styles in there
also its own script section at its bottom
very bad page speed as of now
now comes mod pagespeed
combine heads
combine css
combine js, defer its loading
> Jo
Example: personalized pages (different content based on visitor, makes no sense to cache it)
> Jo
3 parts on home page
let's assume you want to change header and test
defer async stops pagespeed from combining
page barrier = inline script, order important, cannot combine assets above and below barrier
stylesheet --> for example media attribute
authentication and a/b testing -> need to get cookies and headers to the fragments
javascript integration / interaction -> window.event or something else??
Bootstrap: for example Fonts or javascript error logger etc.
> Arif
...as long as they stay within the boundaries of their contracts