De afgelopen jaren zijn door grote internetbedrijven en binnen de opensource-community technieken ontwikkeld, die het mogelijk maken om grote hoeveelheden data te verwerken. Dit wordt Web-scale IT genoemd en parallellisatie is hierbij een belangrijke term. In deze sessie bespreken we de technologie die bedrijven als Google, Twitter, Netflix en Facebook toepassen om grote hoeveelheden data te verwerken. We bespreken technieken als Hadoop Storm en HDFS, Akka Reactive Streams, HBase, Redis, Cassandra, Memcached en Apache Thrift. Verder laten we een aantal belangrijke strategieën zien zoals sharding, load balancing, caching, CQRS en NoSQL. Vervolgens bespreken we een aanpak om Web-scale technieken toe te passen binnen een bestaande IT architectuur. Hoe kun jij de Web-scale technieken toepassen binnen je huidige klus?
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
DSD-NL 2021 Delft-FEWS in de cloud - Schotmeijer en EkkelenkampDeltares
Presentatie door Gert-Jan Schotmeijer, Rudie Ekkelenkamp (Deltares), op de Delft-FEWS NL Gebruikersdag 2021 - deel 2, tijdens de Deltares Software Dagen - Editie 2021. Dinsdag, 22 juni 2021, Delft.
DSD-NL 2019 Cloud services in onze waterwereld - SchotmeijerDeltares
Presentatie door Gert-Jan Schotmeijer, Deltares, op het D-HYDRO Symposium 2019, tijdens de Deltares Software Dagen - Editie 2019. Woensdag, 19 juni 2019, Delft.
Short (45 min) version of my 'Pragmatic Real-World Scala' talk. Discussing patterns and idioms discovered during 1.5 years of building a production system for finance; portfolio management and simulation.
DSD-NL 2021 Delft-FEWS in de cloud - Schotmeijer en EkkelenkampDeltares
Presentatie door Gert-Jan Schotmeijer, Rudie Ekkelenkamp (Deltares), op de Delft-FEWS NL Gebruikersdag 2021 - deel 2, tijdens de Deltares Software Dagen - Editie 2021. Dinsdag, 22 juni 2021, Delft.
DSD-NL 2019 Cloud services in onze waterwereld - SchotmeijerDeltares
Presentatie door Gert-Jan Schotmeijer, Deltares, op het D-HYDRO Symposium 2019, tijdens de Deltares Software Dagen - Editie 2019. Woensdag, 19 juni 2019, Delft.
Ontsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegdProact Netherlands B.V.
Organisaties die, al dan niet door fusies en overnames, naar meerdere vestigingen gegroeid zijn en te maken hebben met verschillende decentrale oplossingen per vestiging, krijgen te maken met extra ICT uitdagingen:
- Hoe beheer ik de ICT in de internationale vestigingen?
- Kan de data van de decentrale vestigingen worden geconsolideerd in mijn eigen datacenter?
- Kunnen de decentrale applicaties mogelijk gecentraliseerd worden?
Leer in deze presentatie meer over de mogelijke oplossingen voor de ontsluiting van remote offices en mobiele locaties: WAN-optimalisatie, Edge computing, virtuele storage appliances en meer.
Hosting van Drupal gemeentesites @ DrupalJam 2014Bas van der Zalm
The presentation is about the hosting requirements and setup for local goverments using the Drupal for Goverments Drupal distribution based on the Top Tasks principle. The presentation was done by Bas van der Zalm from Webscale at DrupalJam 2014 in Maarssen, The Netherlands.
ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)Compatibles2 BV
Cy7 ARM Server Introductie BeNeLux Q4 2014. Op ARM micro servers gebaseerde Cloud Servers vormen de revolutionaire en innovatieve Storage Solution die de laagste TCO kent, energiebesparend is en de basis vormt voor uw Next Gen Data Center Storage. ARM based Micro Server bieden:
* Exabyte scale object en block Cloud Storage op basis van GlusterFS, Ceph of een ander clustered network filesysteem
* AWS S3 Compatible Object Store met REST interface
Big Data Analyse met Hadoop
* Parallel Computing voor wetenschappelijk onderzoek
Web Serving voor gedistribueerde Cloud omgevingen
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
Bijna iedereen in Nederland kent de Serious Request actie van 3FM en het Nederlands Rode Kruis. Wat weinig mensen weten is dat de afgelopen 2 edities voor een belangrijk deel op Windows Azure draaide. In deze presentatie wordt de architectuur achter de oplossing toegelicht, welke Azure componenten er gebruikt zijn. Wat we geleerd hebben van de eerste editie, wat we daarom aanpast hebben voor de tweede editie, en wat er nog meer mogelijk was omdat het Windows Azure platform zich in de tussentijd ook verder ontwikkeld heeft. Ook worden er veel ervaringen gedeeld waar je als ontwikkelaar tegen aan kan lopen bij het opzetten van een Windows Azure oplossing.
BA Netapp Event - Always there IT InfrastructuurB.A.
Presentatie van Jan Guldentops ( j@ba.be ) gegeven 15 september 2011 in het Provinciehuis Vlaams-Brabant.
Het bevat een hele samenvatting over hoe wij IT-infrastructuur met een hoge beschikbaarheid bouwen ( Always there IT infrastructure)
Webinar: Het nieuwe back-uppen: simpel, snel en schaalbaarICT-Partners
Ben jij belast met het beheren van de back-up van jouw organisatie? En herken je de volgende punten?
- Back-up is een tijdrovende klus waar ik eigenlijk geen tijd voor heb.
- Het schedulen van alle jobs zodat alles past, is een hels karwei!
- Het terugzetten van een back-up duurt voor mijn organisatie té lang.
In dit webianr laten wij je, onder andere middels een live demo, zien hoe je back-upbeheer kunt transformeren naar een eenvoudig, veilig en snel proces waar je nauwelijks omkijken meer naar hebt.
Dutch NEXT on Tour Keynote and Technical DeckNEXTtour
If you missed the sold-out Nutanix .NEXT Conference, register now to attend .NEXT On Tour and get a front row seat as we reveal Nutanix Acropolis and Prism - solutions that will power the next generation of enterprise computing.
In many parts of today’s application architectures, a synchronous model is in use for all questions – even those that are really more one way messages than two-way questions, for example HTTP requests from browser to server and JDBC database requests. This approach of ‘hold your breath after asking a question until the response comes in’ is not smart and no longer necessary. This session describes how by leveraging opportunities for asynchronous processing,the perceived responsiveness of our systems is likely to improve. Frequently, the actual scalability is enhanced as well by making much better use of parallel processing power of current CPUs and Virtual Machines and by throttling peak loads by deferring some of the work. This presentation includes the browser (HTML 5, JavaScript, Web Sockets & SSE), middle tier (Java EE, Service Bus) and Database.
Decoding the airspace above you with Java and $7 hardware - Bert Jan SchrijverNLJUG
Software-defined radio (SDR) is een radio-communicatiesysteem waarbij een deel van de componenten niet als hardware maar als software geïmplementeerd zijn. Goedkope digitale TV-ontvangers werken vaak op die manier. Bepaalde chipsets die veel voor dat soort ontvangers gebruikt worden zijn zelfs dusdanig generiek dat je ze softwarematig op een frequentie naar keuze kunt afstemmen. En dat is waar het leuk begint te worden: met de juiste software kun je niet alleen TV ontvangen maar ook portofoons, scheepvaartverkeer, en.. signalen van ADS-B transponders van commercieel vliegverkeer. In deze sessie laat ik zien hoe je met een USB-stick van 7 dollar ADS-B berichten van vliegtuigen kunt ontvangen. Ik leg uit hoe je die data met een Java-applicatie kunt verwerken en kunt visualiseren via de Google maps API. Het eindresultaat is een webapplicatie die een actuele weergave van het vliegverkeer boven Nederland geeft.
More Related Content
Similar to The future of Web-Scale - Johan Tillema, Rene Boere & Chris Quach
Ontsluiting van remote offices en mobiele locaties: 5 bouwstenen uitgelegdProact Netherlands B.V.
Organisaties die, al dan niet door fusies en overnames, naar meerdere vestigingen gegroeid zijn en te maken hebben met verschillende decentrale oplossingen per vestiging, krijgen te maken met extra ICT uitdagingen:
- Hoe beheer ik de ICT in de internationale vestigingen?
- Kan de data van de decentrale vestigingen worden geconsolideerd in mijn eigen datacenter?
- Kunnen de decentrale applicaties mogelijk gecentraliseerd worden?
Leer in deze presentatie meer over de mogelijke oplossingen voor de ontsluiting van remote offices en mobiele locaties: WAN-optimalisatie, Edge computing, virtuele storage appliances en meer.
Hosting van Drupal gemeentesites @ DrupalJam 2014Bas van der Zalm
The presentation is about the hosting requirements and setup for local goverments using the Drupal for Goverments Drupal distribution based on the Top Tasks principle. The presentation was done by Bas van der Zalm from Webscale at DrupalJam 2014 in Maarssen, The Netherlands.
ARM Your Green Cloud for Big Data (Cy7 ARM Server Introduction BeNeLux Q4 2014)Compatibles2 BV
Cy7 ARM Server Introductie BeNeLux Q4 2014. Op ARM micro servers gebaseerde Cloud Servers vormen de revolutionaire en innovatieve Storage Solution die de laagste TCO kent, energiebesparend is en de basis vormt voor uw Next Gen Data Center Storage. ARM based Micro Server bieden:
* Exabyte scale object en block Cloud Storage op basis van GlusterFS, Ceph of een ander clustered network filesysteem
* AWS S3 Compatible Object Store met REST interface
Big Data Analyse met Hadoop
* Parallel Computing voor wetenschappelijk onderzoek
Web Serving voor gedistribueerde Cloud omgevingen
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
Bijna iedereen in Nederland kent de Serious Request actie van 3FM en het Nederlands Rode Kruis. Wat weinig mensen weten is dat de afgelopen 2 edities voor een belangrijk deel op Windows Azure draaide. In deze presentatie wordt de architectuur achter de oplossing toegelicht, welke Azure componenten er gebruikt zijn. Wat we geleerd hebben van de eerste editie, wat we daarom aanpast hebben voor de tweede editie, en wat er nog meer mogelijk was omdat het Windows Azure platform zich in de tussentijd ook verder ontwikkeld heeft. Ook worden er veel ervaringen gedeeld waar je als ontwikkelaar tegen aan kan lopen bij het opzetten van een Windows Azure oplossing.
BA Netapp Event - Always there IT InfrastructuurB.A.
Presentatie van Jan Guldentops ( j@ba.be ) gegeven 15 september 2011 in het Provinciehuis Vlaams-Brabant.
Het bevat een hele samenvatting over hoe wij IT-infrastructuur met een hoge beschikbaarheid bouwen ( Always there IT infrastructure)
Webinar: Het nieuwe back-uppen: simpel, snel en schaalbaarICT-Partners
Ben jij belast met het beheren van de back-up van jouw organisatie? En herken je de volgende punten?
- Back-up is een tijdrovende klus waar ik eigenlijk geen tijd voor heb.
- Het schedulen van alle jobs zodat alles past, is een hels karwei!
- Het terugzetten van een back-up duurt voor mijn organisatie té lang.
In dit webianr laten wij je, onder andere middels een live demo, zien hoe je back-upbeheer kunt transformeren naar een eenvoudig, veilig en snel proces waar je nauwelijks omkijken meer naar hebt.
Dutch NEXT on Tour Keynote and Technical DeckNEXTtour
If you missed the sold-out Nutanix .NEXT Conference, register now to attend .NEXT On Tour and get a front row seat as we reveal Nutanix Acropolis and Prism - solutions that will power the next generation of enterprise computing.
In many parts of today’s application architectures, a synchronous model is in use for all questions – even those that are really more one way messages than two-way questions, for example HTTP requests from browser to server and JDBC database requests. This approach of ‘hold your breath after asking a question until the response comes in’ is not smart and no longer necessary. This session describes how by leveraging opportunities for asynchronous processing,the perceived responsiveness of our systems is likely to improve. Frequently, the actual scalability is enhanced as well by making much better use of parallel processing power of current CPUs and Virtual Machines and by throttling peak loads by deferring some of the work. This presentation includes the browser (HTML 5, JavaScript, Web Sockets & SSE), middle tier (Java EE, Service Bus) and Database.
Decoding the airspace above you with Java and $7 hardware - Bert Jan SchrijverNLJUG
Software-defined radio (SDR) is een radio-communicatiesysteem waarbij een deel van de componenten niet als hardware maar als software geïmplementeerd zijn. Goedkope digitale TV-ontvangers werken vaak op die manier. Bepaalde chipsets die veel voor dat soort ontvangers gebruikt worden zijn zelfs dusdanig generiek dat je ze softwarematig op een frequentie naar keuze kunt afstemmen. En dat is waar het leuk begint te worden: met de juiste software kun je niet alleen TV ontvangen maar ook portofoons, scheepvaartverkeer, en.. signalen van ADS-B transponders van commercieel vliegverkeer. In deze sessie laat ik zien hoe je met een USB-stick van 7 dollar ADS-B berichten van vliegtuigen kunt ontvangen. Ik leg uit hoe je die data met een Java-applicatie kunt verwerken en kunt visualiseren via de Google maps API. Het eindresultaat is een webapplicatie die een actuele weergave van het vliegverkeer boven Nederland geeft.
Using Docker to Develop, Test and Run Maven Projects - Wouter DanesNLJUG
Docker recently hit version 1.0 and is being picked up around the world by Ops teams to ease running their applications. Docker can also play a big role in easing the development of applications. In this talk I will address how to use docker to: - create a more scalable build environment using jenkins and docker; - integration test your software using maven and docker; - package your software and run the images in different environments.
Kill the mutants and test your tests - Roy van RijnNLJUG
Quis custodiet ipsos custodes? Better known as: *Who watches the watchmen?* We are all writing tests, doing TDD, BDD. We measure the quality of the tests with line coverage or (even better) branch coverage. This gives you a false sense of security. I've seen projects with tests which have 100% branch coverage but not a single assertion! This is where mutation testing helps out. By creating broken mutated instances of your codebase (mutants) this should result in failing unit tests. This way we can verify that slight code changes (like real life bugs) actually break your tests. In this talk I'll explain what mutation testing is and how it works. We'll also compare some Java frameworks (PIT, Jester, Jumble) that enable automatic mutation testing in your continuous build and how you can start doing mutation testing *right now*.
Real-time user interfaces - sosm gewoon makkelijker - Allard BuijzeNLJUG
Real-time user interfaces zijn niets nieuws. Toch zijn ze vaak beperkt tot chatsites en beursapplicaties, waar de use case vereist dat data continu wordt ververst op het scherm. Dataverversing is echter niet de enige reden om voor een real-time user interface te kiezen. Soms is het simpelweg makkelijker. In deze sessie laat Allard zien hoe een combinatie van eenvoudige standaarden en frameworks kan worden ingezet om de beleving van een gebruiker te verhogen. We houden het niet bij de eenvoudige chat-voorbeelden op basis van WebSockets: we gaan in op de technieken die zijn toegepast in de case management tool van een van Nederland's grootste alarmcentrales.
The end of traditional enterprise IT - ING's journey to the next generation I...NLJUG
Peter will tell about building the engineering culture within ING, how IT within ING has changed, and some examples of the skills we need in our IT organization towards the future. IT from becoming an enabler to a driver for the commercial strategy. About ING’s effort to build an IT engineering culture and to give room for innovation. And some take-away’s towards the future of IT engineering (also within financial institutions).
Performance van Java 8 en verder - Jeroen BorgersNLJUG
We weten allemaal dat de grootste verbetering die Java 8 brengt de ondersteuning voor lambda-expressies is. Dit introduceert functioneel programmeren in Java. Door het toevoegen van de Stream API wordt deze verbetering nog groter: iteratie kan nu intern worden afgehandeld door een bibliotheek, je kunt daarmee nu het beginsel "Tell, don’t ask" toepassen op collecties. Je kunt gewoon vertellen dat er een ??functie uitgevoerd moet worden op je verzameling, of vertellen dat dat parallel, door meerdere cores moet gebeuren. Maar wat betekent dit voor de prestaties van onze Java-toepassingen? Kunnen we nu meteen volledig al onze CPU-cores benutten om betere responstijden te krijgen? Hoe werken filter / map / reduce en parallele streams precies intern? Hoe wordt het Fork-Join framework hierin gebruikt? Zijn lambda's sneller dan inner klassen? - Al deze vragen worden beantwoord in deze sessie. Daarnaast introduceert Java 8 meer performance verbeteringen: tiered compilatie, PermGen verwijdering, java.time, Accumulators, Adders en Map verbeteringen. Ten slotte zullen we ook een kijkje nemen in de keuken van de geplande performance verbeteringen voor Java 9: benutting van GPU's, Value Types en arrays 2.0.
Introduction to Reactive with Play and Akka - Markus JuraNLJUG
Modern web applications that are always connected require a new kind of architecture to handle real-time streaming of data. They require a reactive architecture that is event-driven and resilient to failures. But how hard are these applications to actually build? In this presentation we will learn just how easy it can be to build a reactive application using Play and Akka. The application will use Play to asynchronously read from a web service and stream it to the client using Websockets and JSON. In building this sample you will learn the basics of how a Play application is structured and how it integrates with Akka for building reactive applications.
Web-scale op basis van Hadoop en Akka Reactive Streams - Johan Tillema, Rene ...NLJUG
De ontwikkelingen op het gebied van Big data en Web-scale technieken gaan razendsnel. Hoe ontwerp en realiseer je nu architecturen die steeds grotere datastromen kunnen verwerken? Quintor gaat in deze Keynote in op twee belangrijke producten: Hadoop (Storm, HDFS en Map Reduce) en Akka Reactive Streams.
Cultivating the jenkins job jungle with groovy - Patrick van DisselNLJUG
At bol.com we have 70+ applications that are built and supported by 1000+ Jenkins jobs. And that amount is growing by the week. Each set of Continuous Delivery pipelines consists of around 10 jobs which are mostly the same for each application. Maintaining these jobs in Jenkins by hand via the UI is a hell of a job and error-prone at best. What if there was a better way? A way to describe your Continuous Delivery pipelines in code which can be version-controlled, just like your regular code? There is! By using the Jenkins Job DSL plugin and a bit of Groovy scripting. In this code intensive talk you will learn how to significantly mitigate your risk of RSI by distilling your manual job configurations into automated scripts that are readable, easy to maintain and version controlled. tags: Jenkins, Jenkins JobDSL, Groovy
We hebben SOA nu hebben we µServices (micro). Maar lossen die het architectuur probleem echt op? Of zit er in de basis van onze applicaties al iets mis. Als de basis niet goed is produceren we eigenlijk een distributed big ball of mud. We kijken in deze sessie naar - Architectuur (?) - SOLID principals - Klassieke 3 lagen model - Comonent Based Development - Hexagonal Architecture (ports and adapters) We behandelen hoe deze zaken een (rand) voorwaardelijk zijn voor een goeie architectuur en hoe we dit kunnen toepassen om een monolitische applicatie te verbeteren en daarmee de basis te leggen voor een SOA of µServices architectuur.
Evolutionary Algorithms: the key to solving complex Java puzzles! - Bas knopperNLJUG
Java Developers sometimes face programming challenges, such as creating a school roster or determining a salesperson’s optimal route, that are extremely difficult to crack using conventional approaches. Discover how Evolutionary Algorithms can be applied to solve these complex puzzles. The session starts with a success story from the NASA space archives to explain the concepts. Once the stage is set, it’s puzzle solving time! Learn to code Evolutionary Algorithms using plain Java - although existing Java frameworks such as JGAP are also addressed. The session concludes with a checklist that can be used to determine whether Evolutionary Algorithms are a good fit to the problem. With this checklist, the decision has never been easier!
Modularity and Domain Driven Design; a killer Combination? - Tom de Wolf & St...NLJUG
Applying domain driven design in a modular fashion has implications on how your data is structured and retrieved. A modular domain consists out of multiple loosely coupled sub-domains, each having their own modular schema in the database. How can we migrate and evolve the database schema's separately with each new sub-domain version? And how do we match this with reporting and cross-domain use cases, where aggregation of data from multiple sub-domains is essential? A case study concerning an OSGi-based business platform for automotive services has driven us to solve these challenges without sacrificing the hard-worked-on modularity and loose coupling. In this presentation you will learn how we used Modular Domain Driven Design with OSGi. 'Liquibase' is elevated to become a first class citizen in OSGi by extending multiple sub-domains with automatic database migration capabilities. On the other hand, 'Elasticsearch' is integrated in OSGi to become a separate search module coordinating cross-domain use cases. This unique combination enabled us to satisfy two important customer requirements. Functionally, the software should not be limited by module boundaries to answer business questions. Non-functionally, a future-proof platform is required in which the impact of change is contained and encapsulated in loosely coupled modules.
Apache Wicket: 10 jaar en verder - Martijn DashorstNLJUG
Wicket is een van de levendigste overlevers van de Grote Web Framework Oorlogen uit het midden van de jaren 2000: dit jaar vieren we het 10 jarige jubileum. Toch komt de vraag "Is er een toekomst voor serverside web frameworks" naar boven. In deze presentatie geeft Martijn Dashorst een kort overzicht van de geschiedenis van Wicket. Met een blik op de huidige stand van zaken, geeft hij een overzicht van de huidige gebruikers van Wicket, de toestand van de community en toekomstige release plannen. Het grootste deel van deze sessie zal worden besteed aan de toekomst van Wicket: heeft een component georienteerd Java web framework een toekomst in het tijdperk van native clients en client side JavaScript frameworks? Martijn zal de plannen presenteren om Wicket productiever te maken voor huidige gebruikers, beter te integreren met JavaEE technologieën en veel meer.
Returning the right results - Jettro CoenradieNLJUG
Every website has one, a search box. Did you ever use it? Did you find the right thing? Some websites do a good job, others do a real bad job. What about yours? Installing an (elastic)search service is easy, configuring your index to find the right thing is a lot harder. There are a lof of things that impact the results of searches. Think about the type of data, analysis of the inserted data, the type of queries. In the end the right data is usually found by looking at the highest score of a matched document. What is a score? How is the score calculated? How can the score be influenced? That is what this talk is about, I’ll show you how to use scoring to find the right thing using elasticsearch. So, do you want to improve your websites search box results? Then join me during my talk and together we make it happen.
Reactive programming met Java 8 en Java EE 7 - Martijn BlankestijnNLJUG
Java SE 8 is een grote stap in de evolutie van het Java Platform. Java 8 introduceerde lambda's, een nieuwe Date-Time API en nog veel meer. Completable Futures is een nieuwe Java 8 feature die vaak over het hoofd wordt gezien. Completable Futures (a.k.a. promises) borduren verder op de bestaande Future API en maakt een asynchroon, non-blocking event-driven programmeermodel mogelijk. Deze sessie geeft een inkijk in de Completable Future API en plaatst deze in de context van het toenemend gebruik en interesse voor asynchroniciteit en 'reactive programming'. De live-demo's demonstreren hoe een traditionele service met 'vanilla' Java EE 7 API's zoals JAX-RS en JSON wordt omgevormd tot een 'pipeline' van (parallel uitgevoerde) operaties.
Event-sourced architectures with Akka - Sander MakNLJUG
Different JVM languages lead to different architectural styles. We all know the typical three-tiered architecture and its limitations. Akka and Scala offer event-sourcing. Event-sourced apps model all state changes explicitly and store them immutably. The actor model makes this horizontally scalable. Even better are the functional benefits: a provably correct auditlog and creating new views on past data. This session introduces the event-sourcing concepts. You’ll see how well they map onto actors. To prove this, we show an event-sourced application using Akka. The new Akka Persistence module provides excellent building blocks. Want to learn about the next generation of scalable architectures on the JVM? Check out event-sourcing with Akka!
3. Quintor
Load balancing
Requests
verspreiden over
meerdere
servers/nodes/data
centers.
Op basis van:
- Round Robin
- Geo locatie
- Least connection
HAProxy
Nginx
Amazon
ELB
HAProxy beschikt
over de meeste
mogelijkheden (SSL
support in
onwikkeling)
Nginx erg geschikt
voor high load en
biedt SSL support
Amazon ELB, goede
keuze bij gebruik van
AWS
4. Quintor
Caching
Ontlasten van
backend systemen
en versnellen van
applicatie.
Is een goede
aanvulling op
nagenoeg elke
applicatie
Memcached
Redis
Memcached erg
eenvoudig in gebruik en
beheer.
Redis bevat meer
datatypes en complexe
methodes die het
bruikbaar maken voor
meedere doeleinden.
Top 10 lijsten,
publish/subscribe etc.
Vb:
Twitter bewaart
timelines alleen in
Redis
5. Quintor
Content delivery network
Verlagen van
netwerk latency bij
het serveren van
Statische content
(HTML/CSS/foto's/
video's)
Veel CDN
aanbieders
beschikbaar:
Amazon
Cloudfront
Microsoft
Azure
Gebruikt servers
verspreid over
groot gebied zodat
klanten met hoge
availability en
snelheid diensten
kunnen gebruiken.
7. Quintor
No SQL
Gedistribueerde
database gebaseerd op
HDFS. Gebaseerd op
BIGTABLE.
Gedistribueerde
database over
gelijkwaardige nodes.
Meerwaarde bij
miljarden records en
minimaal 5 nodes.
CQL3 interface heeft veel
overeenkomsten met
“SQL”
JDBC driver beschikbaar
Zeer geschikt voor
datasets die veel
wijzigen. Volledig in
memory.
In-memory database
met disk persistence
HBase
Cassandra
Redis
9. Quintor
Sharding
Horizontaal partitioneren
van database,
verschillende rijen in
verschillende databases
met zelfde schema.
Noodzakelijk wanneer
een database node niet
meer toereikend is.
WebscaleSQL/Gizzard
Custom sharding
Backend met sharding
features bv MongoDB,
Hbase.
WebscaleSQL is
gebasseerd op MySQL.
Sharding vindt vaak
plaats op basis van
geografische locatie.
Bestaande relationeel
model blijft bruikbaar.
17. Quintor
HDFS
• Namenode: HDFS master. Bewaart complete directory tree van het file system. Bepaalt waar
blokken data worden opgeslagen en gerepliceerd. Slaat zelf geen inhoudelijke data op (alleen
verwijzingen)
• Datanode: Slaat data op in het hadoop filesystem. Wordt gestuurd door de namenode welke
data hij op moet slaan.
• Clients: vragen aan de Namenode locatie van de data, en brengen/halen de data naar/van de
Datanode
19. Quintor
YARN / Map Reduce Architecture
• Resource manager: Het proces dat de resources in het cluster verdeeld over de diverse nodes
• Node Manager: Het proces dat de status van de node monitored (CPU, memory, disk,
netwerk) en dit communiceert met de resource manager
• Application Master: Per map reduce job is er 1 Application master die het werk verdeeld over
de diverse nodes, en dit afstemt met de resource manager
21. Quintor
HBase
• HMaster:
– Coördinatie
– monitoring van het cluster
– verdeelt regions
– load balacing en failover
• HRegionServer
– opslag van region
– distributie van regions
– verwerken van lees-/schrijfacties
– communicatie met clients
24. Quintor
MapReduce
Map
Verdeel de data in kleinere brokken
Shuffle
Verzamel de brokken op basis van
sleutel
Reduce
Filter de relevante data
25. Quintor
public class Map extends MapReduceBase
implements Mapper<LongWritable, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(LongWritable key, Text value,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException {
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
while (tokenizer.hasMoreTokens()) {
word.set(tokenizer.nextToken());
output.collect(word, one);
}
}
}
26. Quintor
public class Reduce extends MapReduceBase
implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce(Text key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOException {
int sum = 0;
while (values.hasNext()) {
sum += values.next().get();
}
output.collect(key, new IntWritable(sum));
}
}
29. Quintor
Ambari
• Provisioning van Hadoop Services op kale linux machines
• Prerequisited
– FQDN
– DNS en reverse DNS
– NTP
– SSL public key van Ambari in authorized_keys
33. Quintor
Storm
• Nimbus: daemon voor de master node (vergelijkbaar met de application manager in
MapReduce)
• Supervisor: daemon voor de worker node. Luistert naar taken dat is toegewezen aan zijn
machine door de master node (nimbus). De supervisor start processen om deze taken uit te
voeren.
• Zookeeper: bewaart de state van de communicatie tussen de nimbus en de supervisor(s),
zodat deze alleen de processen uitvoeren, en dus stateless blijven
Bij toename van aantal request willen we de load verdelen er van uitgaande dat je applicatie stateless is en ook schaalbaar is.
Verschillende opties, Bv AWS ELB (elastic load balancer), Nginx (engine-x) en HAProxy. Als je host in AWS dan is ELB een voor de hand liggende keuze. Algorithm Options
HAProxy has the most options in this arena, support Round-Robin, Least Connection, Weighted and more.
Nginx supports Round-Robin and Least connected (active connections) en ip-hashed .
AWS ELB only supports Round-Robin.
- See more at: http://mervine.net/comparing-load-balancing#sthash.JrFuLKnC.dpuf
Monitoring voor HAProxy en Nginx: Scout
Goede toevoeging voor elke webapplicatie. Als we writes acties meerdere keren willen lezen is het verstandig deze gegevens te cachen. Memcached is een goed voorbeeld een eenvoudige cahce mechanisme (verwijzing presentatie Aschwin) waamee je een roundtrip en daarmee belasting op backend eenvoudig kunt verminderen (nog maar 10%). Redis is nog iets geavaceerder waarmee het ook mogelijk wordt om iets complexere structuren te cachen waamee ook latest comments en tweet timelines volledig en eenvoudig uit cache te achterhalen zijn.
Na sharding komen de NoSQL oplossing als praten over grote hoeveelheden gegevens dan is sharding op termijn ook geen haalbare oplossing meer en betere BigData oplossingen zoals Hadoop en Google BigTable zijn er goede oplossingen beschikbaar. Bijvoorbeedl HBase een database gebasseerd op het BiGTable principe en goed bruikbaar wordt bij erg grote datasets denk aan honderden of biljoenen records.
HBase
Automatic sharding van tables in regions (automatische split en re-distrubution)
Hadoop/HDFS integration standaard
Java client API
Thrift/REST api
Wanneer toepasbaar:
Is goed toepasbaar bij veel data “Big Data”, Dus bij honderden miljoenen of biljoenen records. Bij een paar duizend/miljoen rijnen dan is RDBMS waarschijnlijk een beter keuze.
Accumulo is ook nog een BigTable clone met cell based security afkomstig vanuit NSA
Cassandra is ook geavanceerde gedistribueerde database over vergelijkbare nodes waarvan elke node de coordinatie voor zijn rekening kan nemen. De interface zal veel mensen herkenbaar zijn. Namelijk “SQL like” op joins na welliswaar.
Availability
- Je data is ten alle tijden beschikbaar en hier mag niet van afgeweken worden
Partition tolerance
- Je data blijft (oneindig) groeien en hier moet je mee om kunnen gaan
Consistency
- Iedereen ziet ten alle tijde dezelfde data, eventualy consistent is not an option
Op het moment dat de hoeveel gegevens van je RDBM niet meer op een node te hosting valt (niet meer te schalen) of te kostbaar is het mogelijkheid om de relationeel model op de delen in kleinere delen “Shards”. Zie voorbeeld Twitter en het gebruik van Gizzard.
Sharding vindt ook plaats maar dan onderdeel van BigData oplossing zoals Hbase, MangoDB etc…
CQRS is een eenvoudig pattern: scheiden van verantwoordelijkheden in een deel dat wijzigingen doorvoert (het Command-gedeelte) en een deel dat data ophaalt (het Query-gedeelte)
“achieve scalability, manage complexity, and manage changing business rules”
Optionele slide.
In veel systemen is er een duidelijk verschil tussen het aantal reads en writes.
Toch behandelen we deze mechanismen vaak op grotendeels dezelfde manier; met een business-laag, een ORM, etc.
Daarnaast zijn databases meestal geoptimalizeerd voor het wijzigen van de gegevens (3NF).
CQRS stelt dat deze 2 kanten van een system verschillend zijn; en waarom deze dan niet optimalizeren voor hun taak.
CQRS schrijft niet voor hoe deze 2 kanten geïmplementeerd moeten worden.
dit kan met één database, maar b.v. verschillende data-access implementaties
of, zoals in dit voorbeeld, met b.v. 2 verschillende databases; waarbij het database-schema gelijk kan zijn, maar ook verschillend
zo zijn er veel meer mogelijkheden om beide kanten te optimalizeren voor hun rol in het system
Event Sourcing = de historie van de state van een applicatie opslaan, waarmee de huidige state bepaalt kan worden
Voorbeeld:
zonder ES: totaal beschikbare aantal van artikelen, b.v. een boek, opslaan en wijzigen bij inkoop en verkoop.
met ES: alle events, dus iedere inkoop- en verkoop-actie, opslaan; beschikbare aantal bepalen door al deze events ‘af te spelen’.
Elke actie op het systeem (event) heeft context. Als een wijziging is doorgevoerd in een traditioneel systeem, is deze context vaak verdwenen. Bij ES is deze context altijd beschikbaar.
Met ES worden alle wijzigingen als een command uitgevoerd.
De commands resulteren in events. Alle events worden opgeslagen.
De events kunnen worden gebruikt om de state van de applicatie te bepalen.
De events worden ook afgehandeld door event-adapters. Deze adapters werken de data-stores bij aan de query-kant.
De adapters kunnen een relationele database bijwerken, met een schema dat is geoptimaliseerd voor het lezen van data.
Maar de adapters kunnen ook de resultaten klaarzetten zoals deze door de service-interface worden opgeleverd; b.v. kant-en-klare HTML-fragmenten en JSON-documenten.
Met CQRS en event sourcing is het mogelijk om bestaande legacy-systemen te ontlasten en de overall performance te verbeteren.
Word count
Meerdere MapReduce processen achtereenvolgens
Word count
Meerdere MapReduce processen achtereenvolgens
Word count
Meerdere MapReduce processen achtereenvolgens