The document discusses the need for reactive and functional programming approaches to build scalable applications that can take advantage of many-core processors and distributed systems. It introduces key concepts like immutability, functions, and declarative programming. Specific frameworks like Scala, Play and Akka are presented as tools that support this reactive, functional style for building web applications that can horizontally scale across multiple cores and nodes. The talk promotes adopting these approaches to build systems that can better handle concurrency, distribution and failure.
(A talk given at Wix R&D in Dnipro, Ukraine on March 2017. Video available at https://www.youtube.com/watch?v=eIX33mQdkAI&feature=youtu.be) While microservices are conceptually simple, it's a deep rabbit hole to go down. Deceptively simple questions can have far-reaching implications: Which communication protocol should I choose? Is event-driven the way to go? What monitoring tools should I put in place? In this talk we'll cover some of the fundamental questions, outline the solutions adopted or developed by Wix, and share our hindsight on what worked well for us, what didn't and thoughts on future directions for our stack.
The term 'streams' has been getting pretty overloaded recently–it's hard to know where to best use different technologies with streams in the name. In this talk by noted hAkker Konrad Malawski, we'll disambiguate what streams are and what they aren't, taking a deeper look into Akka Streams (the implementation) and Reactive Streams (the standard). You'll be introduced to a number of real life scenarios where applying back-pressure helps to keep your systems fast and healthy at the same time. While the focus is mainly on the Akka Streams implementation, the general principles apply to any kind of asynchronous, message-driven architectures.
Omar Lari, Partner Solutions Architect at AWS, presents the Container ecosystem on AWS and how to manage containers. He starts with an overview of the container ecosystem and the various management tools available. Container orchestration concepts are explained, and finally he introduces Amazon EC2 Container Services (ECS). The Expedia success story is presented, illustrating the concepts and solutions adopted.
Want to know what AWS/Amazon Cloud is all about? These slides are good introduction to the gamut of things that AWS offers.
The document discusses Amazon EC2 Container Service (ECS) and Amazon EC2 Container Registry (ECR). It provides an overview of how ECS manages Docker containers across server instances in a cluster, including task scheduling and service deployment. It also summarizes ECR as a fully managed private Docker container registry that provides security, reliability and integration with ECS and other AWS services. The document highlights key capabilities like load balancing, auto scaling, private access control and integration with tools like the Docker CLI.
This document provides an overview of AWS Lambda, a serverless computing service that allows users to run code without provisioning or managing servers. It discusses key Lambda concepts like functions as a service (FaaS), runtime environments, limits, event sources, packaging, frameworks, logging, monitoring, retries, networking, permissions, security, pricing, and tips. Lambda allows developers to focus on coding without worrying about infrastructure management by automatically managing compute resources and scaling in response to requests.
This document provides an overview of building an automatic speech recognition (ASR) engine. It discusses speech as a natural modality with high throughput that needs to account for errors in ASR output. It describes the components of a dialogue system including the ASR, natural language understanding, text-to-speech, and a dialogue manager. The document then discusses the components inside the recognizer including the acoustic model, language model, feature extraction using MFCC, and decoding using techniques like beam search. It also discusses topics like building the lexicon, acoustic modeling, and using deep learning approaches in ASR.
This document provides an overview of Amazon EC2 Container Service (ECS), which allows users to easily run and manage Docker containers. Some key points: - ECS allows users to run Docker containers and manage them without having to worry about installing and operating Docker clusters. - It provides core functionality like scheduling containers on EC2 instances, load balancing, and automated scaling of containers. - Users define their containerized applications as task definitions which specify things like what images to use, CPU/memory resources, and port mappings. - Tasks can then be run or long-running services can be created to run containers behind a load balancer for high availability. - Additional AWS services like EBS,
Experiences with Amazon Web Services and thoughts on Cloud Computing presented at Cybera Summit 08 in Banff, Canada.
EC2 Spot Instances allow users to bid on unused Amazon EC2 computing capacity and run workloads at significant discounts compared to On-Demand prices. Spot Instances provide cost savings of up to 90% and are well-suited for batch jobs, data analytics, rendering, CI/CD, and more. The new Spot Fleet feature allows users to specify target capacities and maximum bid prices and lets AWS manage the Spot Instance fleet.
Presentation from JVMLS 2015 One bottleneck in the Nashorn JavaScript engine is startup time. Nashorn, as it works currently in Java 8, JITs everything to Java bytecode, accruing overhead in code generation and class installation. Nashorn in Java 9, can in unfortunate cases, increase this compilation workload significantly, as the new optimistic type system, which has greatly increased steady state performance, requires more code invalidation on warmup. Based on our optimistic type compilation framework, which contains all the mechanisms for quick code replacement and on stack replacement on the bytecode level, I will present the new execution architecture we are developing. It will minimizes compile time intelligently, while maintaining or possible even increasing code performance, due to extra profiling and execution frequency information being passed to the JIT. I will also talk about what the future will bring in terms of other dynamic languages on the Nashorn engine, partial method compilation of hot paths and other intriguing possibilities that our new execution model opens up.
Learning Objectives: - Learn how to run containers on a managed cluster of Amazon EC2 instances - Learn how to then use EC2 Spot with your containers to significantly reduce the cost of running your applications, or grow your application's compute capacity and throughput for the same budget - Understand the use cases best suited for running containerized workloads on EC2 Spot Containers lend themselves to flexible and portable application deployments, and when used with the Amazon EC2 Container Service (or other schedulers), provide a simple and effective way to manage fleets of instances and containers at scale. Amazon EC2 Spot instances allow you to utilize spare Amazon EC2 computing capacity for a fraction of the cost. This webinar will help architects, engineers and developers understand when and how to run your containerized environment on EC2 Spot instances, saving up to 90% over On-Demand EC2.
My Presentation about AWS Lambda Best Practices and Common Mistakes at Chicago Cloud Conference Chicago 2019 - July 22, 2019
This document discusses serverless architectural patterns including: 1) A web application pattern using AWS Lambda, API Gateway, DynamoDB, S3, and CloudFront
This document discusses the 4 stages of adopting Terraform at an organization from a small startup to a large enterprise. Stage 1 is manual usage with single environments. Stage 2 introduces semi-automated usage with Terraform configuration. Stage 3 focuses on organizational adoption with workspaces, modules, and version control. Stage 4 discusses integration with version control systems, team permissions, and automated "Run Terraform for me" workflows using Terraform Enterprise.
Scripting Embulk plugins makes plugin development easier drastically. You can develop, test, and productionize data integrations using any scripting languages. It's most suitable way to integrate data with SaaS using vendor-provided SDKs. https://techplay.jp/event/781988
Libcloud and JClouds provide open source libraries that offer abstract APIs for interacting with multiple cloud platforms. Libcloud supports Python while JClouds supports Java. They aim to solve the problems of managing multiple cloud stacks that have different APIs by providing a common interface. This helps avoid vendor lock-in and allows applications to easily work across different cloud providers like AWS, Rackspace, Cloud.com and others.
This document discusses using declarative programming and algebraic data types (ADTs) to concentrate on important aspects of code and check as much as possible early. It provides examples of using ADTs in Python to define types for multilingual content and ensure consistency. ADTs allow defining types as variants like an enumeration that can be matched on to concentrate on "what" rather than "how". Consistency is ensured by checking that all variants are handled. This improves coherence of components.
A fast intro to Scala and Play, to prepare the audience for a live demo of a Play Application using Futures to get weather data from Yahoo in a non blocking way, then display to the user the results. The code is available here https://github.com/tabdulradi/weather
「PlayFramework関西ビギナーズ in OsakanSpace 第1回」 http://atnd.org/events/33666 Play frameworkの概要と今後についてゆるく説明して、 Playとそのコミュニティを雰囲気を知っていただこうという趣旨で発表しました。 参加された方の半数がPHPユーザだったので、冒頭でPHPユーザの方向けの説明を特別に入れたりして工夫しています。
Выступление на DUMP-2015.
A type-safe templating system based on scala, wich provides powerful way to create all such external representations of server- side data.
HTML5 Development with Play Scala, CoffeeScript and Jade Presentation from Devoxx 2011. Discusses these technologies, as well as my story of using them to develop an HTML5 Fitness Tracking application. http://www.devoxx.com/display/DV11/HTML5+with+Play+Scala%2C+CoffeeScript+and+Jade
The latest buzzword in the web service community is “reactive.” We dig beneath the surface of this word and show how you can use Scala and Akka to build systems that are responsive, resilient, elastic, and message-driven.
Building single page applications has always seemed like a dark art. Guess what? It's not. The key is really simple—let the URL dictate everything. I'll show how to use the window location's hash in combination with jQuery's event system to drive your entire application, from link clicks to form submissions to history management and beyond.
This document provides an overview of building a Scala web application using the Play! framework. It begins with introductions to Scala and the Play! framework. It then covers topics like request handling, views, forms, database integration, the build system, internationalization, and testing. Exercises are provided to demonstrate creating routes, controllers, actions, views, forms, database models and more. The presenter is available to answer questions after the session and provides information on open positions at their company Lucid Software.
This document discusses the origins and principles of reactive web applications. It began with a 1985 paper on reactive systems and was further defined in 2013 with the Reactive Manifesto. The four principles of reactive applications are that they should respond to users, scale to load, be resilient to failures, and be event-driven. Reactive technologies like Play Framework use asynchronous non-blocking techniques for better resource utilization compared to traditional threaded approaches. Key concepts for building resilient reactive applications include supervision, actors, and reactive streams.
The document provides an introduction to reactive programming concepts using the ReactiveX API. It discusses key reactive programming concepts like observables, observers, and streams that emit values. It shows how to define observables from variables and events, subscribe observers to observables to receive emitted values, and handle asynchronous and threaded behavior. The document also demonstrates how to solve a loading spinner coordination problem between multiple asynchronous requests using reactive programming patterns like combining observables rather than directly manipulating state. It discusses advantages like explicit states, reduced complexity, and error handling but also drawbacks like dependency issues.
The document discusses the Play Framework, a web framework for Java and Scala. It introduces Play and outlines why it is useful, how to install it, and how to structure a new Play application. It then discusses moving a Play application to Google Cloud Platform for scalability. Key points are that Play provides predictable scalability, is developer friendly, and has a large ecosystem. The document recommends using Play Framework with Google Cloud Platform to achieve scalability without having to manage servers directly.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020. Reactive web-applications are an answer to the new requirements of high-availability and resource efficiency brought by this rapid evolution. On the JVM, a set of new languages and tools has emerged that enable the development of entirely asynchronous request and data handling pipelines. At the same time, container-less application frameworks are gaining increasing popularity over traditional deployment mechanisms. This talk is going to give you an introduction into one of the most trending reactive web-application stack on the JVM, involving the Scala programming language, the concurrency toolkit Akka and the web-application framework Play. It will show you how functional programming techniques enable asynchronous programming, and how those technologies help to build robust and resilient web-applications.
This document discusses the development of a single-page web application for a student markbook using Akka actors and HTTP. Key points discussed include: - Using multiple Akka actors to retrieve student, schedule, subject and mark data from various data services. - A worker actor that processes the retrieved data and returns student week marks. - A REST API with routes to get lists of students and individual student week marks. - The application server is initialized by binding the API routes to an HTTP server.
"It’s open source. It’s highly opinionated. Build greenfield microservices and decompose your Java EE monolith like a boss." Lightbend (formerly Typesafe) has come up with their own framework, Lagom, for architecting microservices based systems. With Lagom, Lightbend wants to take up the competition with the Spring Cloud stack. Lagom is built upon Akka and Play and focuses on reactive and message-driven APIs, distributed persistence with Event Sourcing and CQRS and high developer productivity. On the 10th of March a first MVP version has been released with a Java API, the Scala API is being worked on. This workshop acts as an introduction to Lagom during which we will have a look at developing and deploying Lagom microservices. As a warm-up, you could check out the newest blogpost on the JWorks Tech Blog: https://ordina-jworks.github.io/microservices/2016/04/22/Lagom-First-Impressions-and-Initial-Comparison-to-Spring-Cloud.html. Github repo with presentation: https://github.com/yannickdeturck/lagom-shop Blogpost Lagom: First Impressions and Initial Comparison to Spring Cloud: https://ordina-jworks.github.io/microservices/2016/04/22/Lagom-First-Impressions-and-Initial-Comparison-to-Spring-Cloud.html Podcast Lightbend Podcast Ep. 09: Andreas Evers test drives Lagom in comparison with Spring Cloud: https://www.lightbend.com/blog/lightbend-podcast-ep-09-andreas-evers-test-drives-lagom-in-comparison-with-spring-cloud
This document discusses different approaches to dependency injection in Scala, especially for use with Play!. It evaluates Spring, Spring-Scala, CDI, Guice, SubCut and Cake based on criteria like idiomatic Scala usage, testing support, and fit with Play!. Spring-Scala is recommended for projects that need to integrate Java and Scala code. Guice and Cake are recommended for standalone Scala projects. Cake provides additional type safety while Guice and Cake are good options for Play! projects.
This document discusses whether single page applications (SPAs) can deliver a world-class web user experience (UX). It begins with an introduction to SPAs, noting how they differ from traditional multi-page websites by loading entire experiences onto a single HTML page using JavaScript. The document then covers some of the key differences of SPAs, including how to address navigation and state changes without page loads, measuring performance, and ensuring search engine indexing, accessibility, and browser support work properly. It concludes that while SPAs require a different approach to design and development, they can enable a more personalized, adaptive experience when their capabilities, like smooth transitions between views, are leveraged effectively.
This document provides an overview and introduction to Akka HTTP, a Scala library built on Akka Streams for HTTP-based applications. Some key points: - Akka HTTP uses Akka Streams to model HTTP requests and responses as streaming data flows. - It allows building both HTTP clients and servers by composing stream processing stages together. - Common directives and operations like routing, marshalling, validation, and testing are supported through a high-level API. - Examples demonstrate basic usage like creating a route that returns XML, running a server, and writing tests against routes.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1stYuc2. Brennan Saeta covers aspects of Coursera’s architecture that enables them to rapidly build sophisticated features for their learning platform. Saeta discusses also their experience running containers in production, what works, what doesn’t, and why. He briefly touches upon container threat models, and how to architect a defense-in-depth strategy to mitigate both known and unknown vulnerabilities. Filmed at qconlondon.com. Brennan Saeta is a Lead Infrastructure Engineer, leading the ‘Cour’ (core) group responsible for the development environment, core libraries, and the common infrastructure powering Coursera.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1VoUxQr. Rachel Reese talks about Jet.com's chaos testing methods and code in depth, but also lays out a path to implementation that everyone can use. Filmed at qconlondon.com. Rachel Reese is a long-time software engineer and math geek. She currently helps run the Nashville F# User group, NashFSharp, and previously ran the Burlington, VT functional programming user group, VTFun. She's also an ASPInsider, an F# MVP, a community enthusiast, one of the founding lambdaladies, and a Rachii.
Apache Spark has grown to be one of the largest open source communities in big data, with over 190 developers and dozens of companies contributing. The latest 1.0 release alone includes contributions from 117 people. A clean API, interactive shell, distributed in-memory computation, stream processing, interactive SQL, and libraries delivering everything from machine learning to graph processing make it an excellent unified platform to solve a number of problems. Apache Spark works very well with a growing number of big data solutions, including Cassandra and Hadoop. Come learn about Apache Spark and see how easy it is for you to get started using Spark to build your own high performance big data applications today.
Over the past few years, web-applications have started to play an increasingly important role in our lives. We expect them to be always available and the data to be always fresh. This shift into the realm of real-time data processing is now transitioning to physical devices, and Gartner predicts that the Internet of Things will grow to an installed base of 26 billion units by 2020. As reactive architectures gain in popularity, more and more developers find themselves faced with the challenge of "thinking reactive". To leave behind the well-known concepts of mutable, object-oriented, imperative and synchronous programming in favour of immutable, functional, declarative and asynchronous programming requires quite a mind shift and it isn't obvious to take the plunge. In this talk we will explore three concepts from the world of functional programming that are at the core of building reactive applications: immutability, higher-order functions and manipulating immutable collections. We will first see how the "traditional" mutable, object-oriented approach of doing things can be problematic when it comes to multi-core programming, and then how to apply them to asynchronous systems.
This document discusses technologies for creating and maintaining web applications. It covers Ruby and the Rails framework. Ruby is designed to be programmer-focused rather than machine-focused, helping create dynamic and self-explained code. Rails enables quickly building web servers through conventions, reuse, single responsibility principles, and features that provide quick setup, deployment, and built-in scalability. The document also discusses front-end architecture with client-side logic, and Rails features for development, deployment, databases, assets, and multi-environment configuration.
Just like life, our code must adapt to the ever changing world we live in. From one day coding for the web, to the next for our tablets or APIs or for running serverless applications. Multi-runtime development is the future of coding, the future is to be dynamic. Let us introduce you to BoxLang. Dynamic. Modular. Productive. BoxLang redefines development with its dynamic nature, empowering developers to craft expressive and functional code effortlessly. Its modular architecture prioritizes flexibility, allowing for seamless integration into existing ecosystems. Interoperability at its Core With 100% interoperability with Java, BoxLang seamlessly bridges the gap between traditional and modern development paradigms, unlocking new possibilities for innovation and collaboration. Multi-Runtime From the tiny 2m operating system binary to running on our pure Java web server, CommandBox, Jakarta EE, AWS Lambda, Microsoft Functions, Web Assembly, Android and more. BoxLang has been designed to enhance and adapt according to it's runnable runtime. The Fusion of Modernity and Tradition Experience the fusion of modern features inspired by CFML, Node, Ruby, Kotlin, Java, and Clojure, combined with the familiarity of Java bytecode compilation, making BoxLang a language of choice for forward-thinking developers. Empowering Transition with Transpiler Support Transitioning from CFML to BoxLang is seamless with our JIT transpiler, facilitating smooth migration and preserving existing code investments. Unlocking Creativity with IDE Tools Unleash your creativity with powerful IDE tools tailored for BoxLang, providing an intuitive development experience and streamlining your workflow. Join us as we embark on a journey to redefine JVM development. Welcome to the era of BoxLang.
This talk (delivered at QConLondon 2016) covers the evolution of Coursera's nearline architecture, delves into our latest generation system, and then covers the flagship application of the architecture (evaluating programming assignments).
Swift is a modern programming language introduced by Apple. Let’s discus the functionality of Swift to understand why it is easy, modern and fast.
Akka provides tools for building concurrent, scalable and fault-tolerant systems using the actor model. The key tools provided by Akka include actors for concurrency, agents for shared state, dispatchers for work distribution, and supervision hierarchies for fault handling. Akka actors simplify concurrency through message passing and isolation, and provide tools for scaling and distributing actors across nodes for increased throughput and fault tolerance.
The document discusses how Spark can be used to supercharge ETL workflows by running them faster and with less code compared to traditional Hadoop approaches. It provides examples of using Spark for tasks like sessionization of user clickstream data. Best practices are covered like optimizing for JVM issues, avoiding full GC pauses, and tips for deployment on EC2. Future improvements to Spark like SQL support and Java 8 are also mentioned.
This short taste of InfluxDB University will help you master the key areas where users commonly struggle when getting started with InfluxDB.