Stateless applications aren't: they rely on other systems storing and transforming shared state correctly. On the basis of documentation and reputation we assume that our clients and database systems comprise a safe, meaningful distributed system. How justified is our faith in that system's correctness? Do popular databases actually provide the safety invariants we assume? Are we using those invariants correctly? I want experimental answers to these questions.
Rarely do we have a chance to rewrite an application from scratch with the newest techniques. Generally we must work within our existing architectures evolving and refactoring years of code. This can make it seem reactive programming either can’t be introduced or doesn’t play a role.
Netflix has been doing reactive programming with RxJava in production for several years and only recently embarked on “greenfield” development efforts that are fully async. This talk will leverage the experience of introducing reactive programming into existing imperative, blocking codebases to demonstrate how it can be done and when it can make sense to do so. Not all benefits of reactive programming can be obtained without a greenfield, fully async architecture, but many can. Subjects to be covered will include the mental shift from imperative to declarative, working with blocking IO such as JDBC and RPC, service composition, debugging and unit testing.
What does it take to build a single page application with all the bells and
whistles needed to be loved by users and by developers who created it? A lot! Amazing applications are:
Blazing fast. They use techniques like server-side rendering, progressive loading, real time connections, and fall through caches to be immediately responsive.
Maintainable. They are tested, documented, well architected, and deterministic.
Fun. They are a joy to program. Common tasks are automatic or easy to perform.
This talk shows how to create fast, maintainable, and fun applications using a
to build some of the most high profile web applications on the internet.
Attendees will learn specific, tangible application development strategies that can be used with any framework.
by Maxim Buryak
RavenDB is a 2nd generation document database, with built-in load distribution, seamless replication, disaster
recovery and data-driven sharding. In this session, we are going to explore how RavenDB deals with scaling under
load and remain highly available even under failure conditions.
We'll see how RavenDB's data-driven sharding allows to increase the amount of the data in our cluster without
giving up the benefits of data locality.
We are are going to execute complex distributed map-reduce queries on a sharded cluster, giving you lightning-fast
responses over very large data volumes.
by Marc Prud'hommeaux
This talk outlines new patterns and idioms that mobile developers will be migrating towards as Swift moves to become the dominant language in Cocoa development.
And yet from time to time we still find ourselves wondering whether '===' is faster than '=='.
What is the right way to approach this question? Is this the question you should be asking to begin with?
We will take a look at some microbenchmarks written by JS developers and discover a violent clash between XIX century approach to benchmarking and XXI century virtual machines.
Deployment systems are where the rubber meets the road for most websites, yet they often begin their lives as uncommented Bash scripts - before exploding into unreadable thousand-line Bash scripts. We'll take a walk through the typical deploy script lifecycle as a business grows, and then look at how Uber's shiny new system handles rolling upgrades, automated rollbacks and other neat features. Finally, we'll peer into the future with Mesos frameworks like Aurora and Marathon.
by Matt Brender
The definition of NoSQL gives us room to lump databases in the same category as analytics frameworks and other technologies. While this categorization is factual, the terms tend to lead to confusion.
Understanding types of data workloads requires a fundamental appreciation of distributed systems. We will explore what factors affect your choice in database technology and particularly how to prioritize the choice in core architectural underpinnings present in NoSQL designs. We will also explore what these technologies solve and suggestions for how to align them with your application’s objectives for data insights.
You’ll leave this session with an understanding of the principles separating NoSQL databases, frameworks like Hadoop, and projects that are top of mind like Apache Spark and Kafka. You’ll also gain a deeper understanding of the considerations when identifying a distributed system to handle both availability and analytics for your active workloads.
by Brian LeRoux
Many recent additions to the web platform are finally just now ubiquitous enough to consider serious use:
Come to this talk to learn how to get started writing structured apps using future friendly vanilla web platform code.
The next version of C# has been reimplemented from scratch in C#, with an open, complete, resilient and incremental language model. All IDE features are built on top of this public API and you can easily add your own – e.g. pluggable diagnostics and code fixes that fit your style and policies. The compiler is open source, and we’ve added a host of new language features. We’ll take a whirlwind tour through the layers of the new C# universe.
by Max De Marzi
Dating, as is often said, is a numbers game. And organizations such as Match.com, and Zoosk rely on very sophisticated technology as they sift through vast customer bases to create the most compatible couples. Specially, they rely on data to build the most nuanced portraits of their members that they can, so they can find the best matches. This is a business-critical activity for dating sites — the more successful the matching, the better revenues will be. One of the ways they do this is through graph databases. These differ from relational databases as they specialize in identifying the relationships between multiple data points. This means they can query and display connections between people, preferences and interests very quickly.
In this session you will see how in many ways dating sites are getting better performance and more value out of their data than financial institutions by using Neo4j.
by Talip Ozturk
Today’s applications are getting more and more distributed everyday and it is well-known that distributed programming is hard. With Hazelcast though, distributed programming is easy and lots of fun. A common reaction of Hazelcast users is ‘Ooh my God, this cannot be that easy’. Hazelcast is an open source, highly scalable, transactional, distributed/partitioned implementation of queue, map, set, list, lock and executor services for Java. Hazelcast is for you if you like to easily: share data/state among many servers (e.g. web session sharing), cache your data (distributed cache), cluster your
application, partition your in-memory data, send/receive messages among applications, distribute workload onto many servers, take advantage of parallel processing or provide fail-safe data management
by James Lewis
Go faster than your competitors. That's the promise of microservices - deploy faster, scale faster, be more robust. It's all about outcomes and the way your organisation is structured has a tremendous impact on those outcomes. it’s easy to say “Conway’s Law” and then move swiftly on. "But but but, but how?"
In early 2014, James and Martin Fowler called out “Organised around business capabilities“ as a core characteristic of microservices. This was based on feedback from successful teams around the world about how important this aspect was on the systems they were building. In this talk, James explores some of these structures and provides some practical guidance on what he and Martin meant when they said “business capability”.
Becoming a professional programmer in the days of Test Driven Development, many are led to believe that there is only one approach to software design and that everyone else is wrong. But what if you’re also a Type fanatic like me? Can these two methods live in harmony? Should they? In this talk we’ll take a rational look across the spectrum of Test and Type driven design, examining the benefits and limitations of these approaches, as well as the language features that best serve these differing needs.
by Ben Newman
In this presentation, Dmitriy will describe the
strategy and architecture behind Apache Ignite(TM) (incubating), a
high-performance, distributed in-memory data management software layer that
has been designed to operate between both new and existing data sources and
applications, boosting application performance and scale by orders of
magnitude. We will dive into the technical details of distributed clusters
and compute grids as well as distributed data grids, and provide code
samples for each. As integral parts of an In-Memory Data Fabric, we will
also cover distributed streaming, CEP and Hadoop acceleration. This
presentation is particularly relevant for software developers and architects
who work on the front lines of high-speed, low-latency Fast Data systems,
high-performance transactional systems and real-time analytics
While micro-services are all the rage, they need to be approached with caution. Using the techniques of evolutionary architecture, coupled with continuous delivery, allows for the micro-services architecture and its companion data architecture to evolve. This talk explores the relationship between these three concepts, focusing on how they all support each other in the creation of complex systems.
by Aaron Bedra
Keeping a multi-faceted system running is hard work. It's even harder when you have to deal with the day to day nonsense that happens on the web. Gathering the data you need to drive your business is also a tricky game. It is made even more complicated by all of the bots running around messing up the place. And the attacks. Oh the attacks. Every day all day with the attacks...
It's not enough to just run your systems. The volume of robotic traffic your system deals with on a daily basis may surprise you. This traffic distorts your numbers, steals your data, and can even cause downtime. You can't ignore it any longer.
Join Aaron as he explores ways to identify and deal with bad robots. He will show you what to look for, how to sort good bots from bad, and what to do with the information once you have it. It will help you deal more efficiently with scrapers, crawlers, scanners, fraudsters, and general malicious activity on your systems and gain some much needed confidence and visibility into the types of traffic you actually get on a day to day basis.
by David Nolen
React.js, immutable data structures, and graph oriented queries are poised to radically change how we think about front end application architecture. We will examine these new approaches and technologies and consider the significant ramifications for client side applications whether for the web or native mobile platforms.
Cloud-hosted services have many advantages, but commonly-deployed cloud architectures have a number of weaknesses when it comes to data management. In particular, when a third party has direct access to your data, that third party becomes an attractive target both for malicious attack and for lawful access via subpoenas served to the third party alone. Additionally, your data becomes subject to the operational security and retention policies of that third party.
These weaknesses can be addressed with end-to-end encryption -- that is, by encrypting sensitive data at the client tier of the architecture, and manipulating it exclusively in encrypted format in the cloud tier. In this talk, we will look at what Cisco is doing to provide end-to-end encryption for our cloud solutions, and some of the challenges we are still working on to fully close the loop for enterprise customers.
by Tom Stuart
Every aspect of our lives has been transformed by the invention of general-purpose programmable computers. As a result, it's tempting to believe that computers can solve any logical or mathematical problem; that if we throw enough time, money and developers at a question, we can produce a program which answers it.
Unfortunately the universe is never that convenient. There are hard theoretical limits on what programs are capable of doing, and there will always be easily-stated problems which are impossible for any computer to solve.
This talk uses code to tell a nail-biting, math-free story about the source of a computer's power, the inevitable drawbacks of that power, and the impossible programs which lie at the heart of uncomputability.
11th–14th May 2015