This document discusses challenges with scaling applications and analyzing large volumes of data. It describes how problems have remained the same over 30 years, such as parsing, filtering, and analyzing large amounts of data, despite hardware advances. The document advocates using binary representations and serialization instead of standard Java objects to improve performance for tasks like data processing, distributed computing and analytics. It provides examples showing how this approach can significantly reduce latency and improve throughput.
The Effect of Router Buffer Size on Subjective Gaming Quality Estimators base...Jose Saldana
Jose Saldana, Julian Fernandez-Navajas, Jose Ruiz-Mas, Eduardo Viruete Navarro, Luis Casadesus, "The Effect of Router Buffer Size on Subjective Gaming Quality Estimators based on Delay and Jitter," in Proc. CCNC 2012- 4th IEEE International Workshop on Digital Entertainment, Networked Virtual Environments, and Creative Technology (DENVECT), pp. 502-506, Las Vegas. Jan 2012. ISBN 9781457720697.
All change! How the new Economics of Cloud will make you think differently ab...JAXLondon_Conference
The document discusses how the economics of cloud computing will change how Java applications are developed and deployed. Cloud providers charge for computing resources on an hourly basis, incentivizing lighter, more efficient applications. Java applications will need to reduce their memory footprints and startup times to lower costs. Developers will also need to design applications to be resilient to failures and easier to debug remotely without access to instances. The rise of APIs and metering of resources will require Java and the JVM to become leaner and more flexible to run optimally in cloud environments.
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJAXLondon_Conference
This document summarizes the past, present, and future of generics in Java and other languages. In the past, generics were added to Java to provide compile-time type safety. Presently, Java generics are commonly used with collections but wildcards are used less. Future areas of exploration include intersection types, declaration-site variance, value types, and unbounded wildcards. The document discusses challenges with generics and how their usage patterns change as new language features are added.
The document discusses shifting perspectives and provides tips for doing so. It suggests investing more time talking about problems and ideas, exploring alternative paths, and being open to shifting your own perspective. The biggest tip is to put yourself in others' shoes to better understand their worries or viewpoints.
Smoothing the continuous delivery path – a tale of two teams - Lyndsay PrewerJAXLondon_Conference
This document discusses best practices for continuous delivery. It describes two teams - a .NET monolith team and a Scala microservices team. The monolith team deploys weekly while the microservices team deploys multiple times per day. The document then outlines best practices for continuous delivery, including healthy continuous integration, testing as an activity, maintaining a "tear drop" shape for test automation, enabling low-cost deployments and rollbacks, and implementing effective metrics and monitoring. It also discusses challenges teams may face and potential accelerators for different environments.
This document provides an introduction to BNP Paribas Commercial Finance and their asset-based lending products. It discusses BNP's presence globally and activities. It then summarizes BNP's evolution from offering simple receivables financing products to developing an asset-based lending proposition. Asset-based lending involves financing against working capital assets like receivables, inventory, and fixed assets. The document describes how BNP finances each type of asset and what types of clients typically use asset-based lending, such as for growth, acquisitions, or changing financial positions.
The document discusses Cassandra and Spark. It describes Cassandra as a distributed database that is good for handling large and changing amounts of data in an always-on system. It then shows how to model transaction data in a Cassandra table, using the card number as the partition key and transaction time as the clustering column. It introduces Spark as a framework for distributed computing that allows processing of data across clusters in-memory using resilient distributed datasets (RDDs). It demonstrates how to read Cassandra data into Spark using the Cassandra connector and perform operations like filtering, mapping, and aggregating before writing results back to Cassandra.
The document discusses common mistakes made when benchmarking systems and provides recommendations for improving benchmarking methodology. Some key issues covered include failing to account for hardware caches, using too few samples which can miss outliers, and testing with unrealistic workloads not representative of real-world usage. The document recommends approaches like profiling tools to better understand system behavior, ensuring workloads are representative, eliminating sources of noise, and reproducing results.
The Effect of Router Buffer Size on Subjective Gaming Quality Estimators base...Jose Saldana
Jose Saldana, Julian Fernandez-Navajas, Jose Ruiz-Mas, Eduardo Viruete Navarro, Luis Casadesus, "The Effect of Router Buffer Size on Subjective Gaming Quality Estimators based on Delay and Jitter," in Proc. CCNC 2012- 4th IEEE International Workshop on Digital Entertainment, Networked Virtual Environments, and Creative Technology (DENVECT), pp. 502-506, Las Vegas. Jan 2012. ISBN 9781457720697.
All change! How the new Economics of Cloud will make you think differently ab...JAXLondon_Conference
The document discusses how the economics of cloud computing will change how Java applications are developed and deployed. Cloud providers charge for computing resources on an hourly basis, incentivizing lighter, more efficient applications. Java applications will need to reduce their memory footprints and startup times to lower costs. Developers will also need to design applications to be resilient to failures and easier to debug remotely without access to instances. The rise of APIs and metering of resources will require Java and the JVM to become leaner and more flexible to run optimally in cloud environments.
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJAXLondon_Conference
This document summarizes the past, present, and future of generics in Java and other languages. In the past, generics were added to Java to provide compile-time type safety. Presently, Java generics are commonly used with collections but wildcards are used less. Future areas of exploration include intersection types, declaration-site variance, value types, and unbounded wildcards. The document discusses challenges with generics and how their usage patterns change as new language features are added.
The document discusses shifting perspectives and provides tips for doing so. It suggests investing more time talking about problems and ideas, exploring alternative paths, and being open to shifting your own perspective. The biggest tip is to put yourself in others' shoes to better understand their worries or viewpoints.
Smoothing the continuous delivery path – a tale of two teams - Lyndsay PrewerJAXLondon_Conference
This document discusses best practices for continuous delivery. It describes two teams - a .NET monolith team and a Scala microservices team. The monolith team deploys weekly while the microservices team deploys multiple times per day. The document then outlines best practices for continuous delivery, including healthy continuous integration, testing as an activity, maintaining a "tear drop" shape for test automation, enabling low-cost deployments and rollbacks, and implementing effective metrics and monitoring. It also discusses challenges teams may face and potential accelerators for different environments.
This document provides an introduction to BNP Paribas Commercial Finance and their asset-based lending products. It discusses BNP's presence globally and activities. It then summarizes BNP's evolution from offering simple receivables financing products to developing an asset-based lending proposition. Asset-based lending involves financing against working capital assets like receivables, inventory, and fixed assets. The document describes how BNP finances each type of asset and what types of clients typically use asset-based lending, such as for growth, acquisitions, or changing financial positions.
The document discusses Cassandra and Spark. It describes Cassandra as a distributed database that is good for handling large and changing amounts of data in an always-on system. It then shows how to model transaction data in a Cassandra table, using the card number as the partition key and transaction time as the clustering column. It introduces Spark as a framework for distributed computing that allows processing of data across clusters in-memory using resilient distributed datasets (RDDs). It demonstrates how to read Cassandra data into Spark using the Cassandra connector and perform operations like filtering, mapping, and aggregating before writing results back to Cassandra.
The document discusses common mistakes made when benchmarking systems and provides recommendations for improving benchmarking methodology. Some key issues covered include failing to account for hardware caches, using too few samples which can miss outliers, and testing with unrealistic workloads not representative of real-world usage. The document recommends approaches like profiling tools to better understand system behavior, ensuring workloads are representative, eliminating sources of noise, and reproducing results.
Events on the outside, on the inside and at the core - Chris RichardsonJAXLondon_Conference
The document discusses event sourcing and how it enables an event-driven enterprise architecture. It describes how event sourcing works by having applications persist all state changes as a sequence of events rather than current state. These events can then be used to rebuild state. When requests are received, past events are replayed to determine the current state. New events generated from requests are published for other applications. This allows for distributed transaction processing without two-phase commit and enables eventual consistency across services.
Chris Richardson presented on using a pattern language approach to discuss microservices architecture. He began by explaining the benefits of using patterns to have a more objective discussion of technology approaches. He then covered some core patterns for microservices, including decomposing monolithic applications into microservices and deploying microservices at the service per container level. Finally, he discussed communication patterns for microservices, including using client-side service discovery to address the problem of dynamically discovering services.
This three-day training for elementary teachers focuses on language proficiency and science process skills. Over the three days, teachers will learn how to plan and conduct simple investigations in teaching science. They will practice identifying variables, employing tools to gather data, and using data to explain results. The training covers proper techniques for recording data in tables and graphs and interpreting results. Teachers will participate in a sample investigation on how the height of liquid changes over time when risen in a paper towel. They will construct a data table and graph to present their findings.
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleJAXLondon_Conference
1) The document discusses the rise of microservices and DevOps approaches in application development and deployment. It notes both the promises and challenges of these approaches, including increased complexity and the need for new tooling.
2) It describes lessons learned from early adoption of microservices, such as the problems that can arise from shared data stores and monolithic upgrades.
3) The document advocates for a "safety first" mindset with DevOps, emphasizing the importance of security, compliance, and understanding where data is located in cloud environments.
The document outlines an agenda for a microservices workshop. It is split into four sessions over half a day covering topics such as why use a microservices architecture, principles and constraints of microservices, splitting services, integration strategies, deployment considerations and more. There will be breaks between the sessions.
This document outlines the objectives and activities of a training on disaster risk reduction. The training aims to: 1) orient participants on disaster risk management and 2) provide skills and techniques to address disaster issues. Participants will be divided into groups that alternate sessions and are expected to conduct school or district level trainings on disaster risk management afterwards. The training covers definitions of disasters, the Philippines' risk profile, and DepEd orders related to disaster risk reduction and response.
The document discusses operational definitions. It begins by stating the expected learning outcomes, which are to identify process skills like defining operationally, understand how these skills are used in teaching and everyday life, and appreciate their importance. Next, it provides examples of operational versus conceptual definitions and explains that operational definitions are based on observable actions rather than abstract concepts. The document emphasizes that operational definitions are important for collecting accurate data and outlines steps for developing them, such as identifying the characteristic of interest and selecting a measuring instrument. Several examples are then given demonstrating how to operationally define variables like enjoyment of reading, temperature effects on evaporation, and size of a person. Finally, the definitions provided are identified as either conceptual or operational.
The document provides guidance on analyzing and interpreting data in teaching elementary science. It discusses the objectives of interpreting data, which include analyzing given data, making interpretations based on evidence, organizing data in different formats, making inferences, and understanding dependent and independent variables. Examples are given of different types of graphs like pie charts, line graphs, and bar graphs that can be used to visualize and analyze data. Steps for interpreting data involve organizing it, creating a graph, looking for trends, making inferences, and checking inferences against existing knowledge. The document emphasizes that interpreting data relies on human judgment and cognition.
The document outlines the objectives and activities of a science session. The objectives are for participants to be able to: identify process skills in developing science ideas like experimenting; perform experimental activities using different variables; and explain the effect of controlled variables, independent variables, and dependent variables in experiments. The document then provides an example experimental design on determining what makes an egg float in water. It includes the problem, hypothesis, materials, procedure, observation, and conclusion.
The document describes the rules and procedures for a nutrition quiz competition with two rounds. The elimination round will have 20 multiple choice questions to be answered in 20 minutes, with only the top 5 scores advancing to the final round. In the final round, scores from the first round will not be considered and questions will be read aloud, with the highest scoring contestant declared the winner and tie-breakers determined through additional clincher questions. The document then provides a sample of 20 multiple choice nutrition questions.
This document defines drugs and explains why people use them. It states that a drug is any substance that alters the body's functions physically or psychologically when ingested. Drugs are categorized as depressants, stimulants, and hallucinogens. Common reasons for drug use include having fun, relaxing, gaining confidence, and coping with problems. The document also describes signs of drug abuse visible in the brain, teeth, and lungs and provides prevention strategies such as getting involved in other activities, talking with others, challenging craving thoughts, and remembering the consequences of drug use.
Science Teaching Approaches and Strategies majumalon
The document discusses various teaching approaches and strategies for science. It begins by defining science as a process of logical thinking and testing hypotheses, rather than just memorizing facts. It then outlines three components of science education: knowledge, process skills, and attitudes. Various teaching strategies are presented, including discovery learning, inquiry-based learning using the 5E model, and using discrepant events. The document also discusses characteristics of learners, reflective teaching approaches, and integrative teaching.
JAX London 2015 - Architecting a Highly Scalable EnterpriseC24 Technologies
At JAX London, John took attendees on a journey where he explained that developers and architects need to consider the fundamentals if they want to design a truly scalable enterprise. That includes understanding the importance of network throughput, packet size, memory allocation and read write speeds. Only then can businesses deliver on a highly scalable architecture for a real-time data-driven future.
Speaker: Joseph Rea, Engineer, Confluent
Joseph will talk about how to visualize topics in Apache Kafka®, the difference between a stream and table in KSQL and his lessons learned on tackling this technical challenge with millions of Kafka messages consumed per second. With such functionalities, users can understand their data easier and in a highly performant and scalable way. This talk covers understanding web workers as they relate to webpack, web socket management, debugging browser performance and the future of the applications that can now be built.
Joseph Rea started engineering with the LAMP stack building custom e-commerce checkouts, ERP systems and enterprise water/sewer billing software. He worked at Yahoo as a front end engineer in the media org before doing Android and iOS development for the video SDK. He also worked at LifeLock to build an application that updated PII on various service sites. He likes turtles. He currently works at Confluent building so much UI. He blogs at https://cnfl.io/blog-joseph-rea.
- Bill Gates helped make careers in IT possible through his work leading Microsoft and making personal computers widely available. Looking back 20 years to 1988 highlights how much prices have decreased and technology has advanced.
- The document reflects on changes in technology over the past 20 years, from the rise of the internet and web to advances in devices, operating systems, and software. It also discusses challenges still facing the industry around areas like security, interoperability, and managing increasingly complex systems.
- While Microsoft faced many lawsuits over the years, it helped drive innovation and growth in the industry overall. The future looks to continued advances in areas like cloud computing, virtualization, social networks, and making systems more efficient and environmentally friendly.
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
In I.T. we all use all kinds of metrics. Operations teams rely heavily on these, especially when things go south. These metrics are sometimes overrated. Let’s dive into a few real life stories together.
Aurélien Rougemont
This presentation, given on the Software Architecture course at the University of Brunel, discusses the interplay between architecture and design. How the designer and architect are really different roles and ones that often have competing goals.
The document discusses major trends in technology that are driving changes to data architecture. It covers:
1. Exponential growth in data and computing power due to Moore's Law, which is causing databases and hardware to rapidly scale up in size and capabilities.
2. Emergence of parallel processing and new hardware like GPUs, FPGAs and fast networks to handle large volumes of data in real-time. Memory and SSDs are replacing disks.
3. These changes require new architectural approaches compared to traditional centralized and client-server models. Event-driven architectures using stream processing and taking compute to the data are discussed.
4. The need to support different data flows like real-time and analytical,
This document provides an introduction to big data and MapReduce frameworks. It discusses:
- What big data is and examples of large datasets.
- An overview of MapReduce, including how it allows programmers to break problems into parallelizable map and reduce tasks.
- Details of how MapReduce frameworks like Apache Hadoop work, including distributed processing, fault tolerance, and the roles of mappers, reducers, and other components.
Events on the outside, on the inside and at the core - Chris RichardsonJAXLondon_Conference
The document discusses event sourcing and how it enables an event-driven enterprise architecture. It describes how event sourcing works by having applications persist all state changes as a sequence of events rather than current state. These events can then be used to rebuild state. When requests are received, past events are replayed to determine the current state. New events generated from requests are published for other applications. This allows for distributed transaction processing without two-phase commit and enables eventual consistency across services.
Chris Richardson presented on using a pattern language approach to discuss microservices architecture. He began by explaining the benefits of using patterns to have a more objective discussion of technology approaches. He then covered some core patterns for microservices, including decomposing monolithic applications into microservices and deploying microservices at the service per container level. Finally, he discussed communication patterns for microservices, including using client-side service discovery to address the problem of dynamically discovering services.
This three-day training for elementary teachers focuses on language proficiency and science process skills. Over the three days, teachers will learn how to plan and conduct simple investigations in teaching science. They will practice identifying variables, employing tools to gather data, and using data to explain results. The training covers proper techniques for recording data in tables and graphs and interpreting results. Teachers will participate in a sample investigation on how the height of liquid changes over time when risen in a paper towel. They will construct a data table and graph to present their findings.
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleJAXLondon_Conference
1) The document discusses the rise of microservices and DevOps approaches in application development and deployment. It notes both the promises and challenges of these approaches, including increased complexity and the need for new tooling.
2) It describes lessons learned from early adoption of microservices, such as the problems that can arise from shared data stores and monolithic upgrades.
3) The document advocates for a "safety first" mindset with DevOps, emphasizing the importance of security, compliance, and understanding where data is located in cloud environments.
The document outlines an agenda for a microservices workshop. It is split into four sessions over half a day covering topics such as why use a microservices architecture, principles and constraints of microservices, splitting services, integration strategies, deployment considerations and more. There will be breaks between the sessions.
This document outlines the objectives and activities of a training on disaster risk reduction. The training aims to: 1) orient participants on disaster risk management and 2) provide skills and techniques to address disaster issues. Participants will be divided into groups that alternate sessions and are expected to conduct school or district level trainings on disaster risk management afterwards. The training covers definitions of disasters, the Philippines' risk profile, and DepEd orders related to disaster risk reduction and response.
The document discusses operational definitions. It begins by stating the expected learning outcomes, which are to identify process skills like defining operationally, understand how these skills are used in teaching and everyday life, and appreciate their importance. Next, it provides examples of operational versus conceptual definitions and explains that operational definitions are based on observable actions rather than abstract concepts. The document emphasizes that operational definitions are important for collecting accurate data and outlines steps for developing them, such as identifying the characteristic of interest and selecting a measuring instrument. Several examples are then given demonstrating how to operationally define variables like enjoyment of reading, temperature effects on evaporation, and size of a person. Finally, the definitions provided are identified as either conceptual or operational.
The document provides guidance on analyzing and interpreting data in teaching elementary science. It discusses the objectives of interpreting data, which include analyzing given data, making interpretations based on evidence, organizing data in different formats, making inferences, and understanding dependent and independent variables. Examples are given of different types of graphs like pie charts, line graphs, and bar graphs that can be used to visualize and analyze data. Steps for interpreting data involve organizing it, creating a graph, looking for trends, making inferences, and checking inferences against existing knowledge. The document emphasizes that interpreting data relies on human judgment and cognition.
The document outlines the objectives and activities of a science session. The objectives are for participants to be able to: identify process skills in developing science ideas like experimenting; perform experimental activities using different variables; and explain the effect of controlled variables, independent variables, and dependent variables in experiments. The document then provides an example experimental design on determining what makes an egg float in water. It includes the problem, hypothesis, materials, procedure, observation, and conclusion.
The document describes the rules and procedures for a nutrition quiz competition with two rounds. The elimination round will have 20 multiple choice questions to be answered in 20 minutes, with only the top 5 scores advancing to the final round. In the final round, scores from the first round will not be considered and questions will be read aloud, with the highest scoring contestant declared the winner and tie-breakers determined through additional clincher questions. The document then provides a sample of 20 multiple choice nutrition questions.
This document defines drugs and explains why people use them. It states that a drug is any substance that alters the body's functions physically or psychologically when ingested. Drugs are categorized as depressants, stimulants, and hallucinogens. Common reasons for drug use include having fun, relaxing, gaining confidence, and coping with problems. The document also describes signs of drug abuse visible in the brain, teeth, and lungs and provides prevention strategies such as getting involved in other activities, talking with others, challenging craving thoughts, and remembering the consequences of drug use.
Science Teaching Approaches and Strategies majumalon
The document discusses various teaching approaches and strategies for science. It begins by defining science as a process of logical thinking and testing hypotheses, rather than just memorizing facts. It then outlines three components of science education: knowledge, process skills, and attitudes. Various teaching strategies are presented, including discovery learning, inquiry-based learning using the 5E model, and using discrepant events. The document also discusses characteristics of learners, reflective teaching approaches, and integrative teaching.
JAX London 2015 - Architecting a Highly Scalable EnterpriseC24 Technologies
At JAX London, John took attendees on a journey where he explained that developers and architects need to consider the fundamentals if they want to design a truly scalable enterprise. That includes understanding the importance of network throughput, packet size, memory allocation and read write speeds. Only then can businesses deliver on a highly scalable architecture for a real-time data-driven future.
Speaker: Joseph Rea, Engineer, Confluent
Joseph will talk about how to visualize topics in Apache Kafka®, the difference between a stream and table in KSQL and his lessons learned on tackling this technical challenge with millions of Kafka messages consumed per second. With such functionalities, users can understand their data easier and in a highly performant and scalable way. This talk covers understanding web workers as they relate to webpack, web socket management, debugging browser performance and the future of the applications that can now be built.
Joseph Rea started engineering with the LAMP stack building custom e-commerce checkouts, ERP systems and enterprise water/sewer billing software. He worked at Yahoo as a front end engineer in the media org before doing Android and iOS development for the video SDK. He also worked at LifeLock to build an application that updated PII on various service sites. He likes turtles. He currently works at Confluent building so much UI. He blogs at https://cnfl.io/blog-joseph-rea.
- Bill Gates helped make careers in IT possible through his work leading Microsoft and making personal computers widely available. Looking back 20 years to 1988 highlights how much prices have decreased and technology has advanced.
- The document reflects on changes in technology over the past 20 years, from the rise of the internet and web to advances in devices, operating systems, and software. It also discusses challenges still facing the industry around areas like security, interoperability, and managing increasingly complex systems.
- While Microsoft faced many lawsuits over the years, it helped drive innovation and growth in the industry overall. The future looks to continued advances in areas like cloud computing, virtualization, social networks, and making systems more efficient and environmentally friendly.
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
In I.T. we all use all kinds of metrics. Operations teams rely heavily on these, especially when things go south. These metrics are sometimes overrated. Let’s dive into a few real life stories together.
Aurélien Rougemont
This presentation, given on the Software Architecture course at the University of Brunel, discusses the interplay between architecture and design. How the designer and architect are really different roles and ones that often have competing goals.
The document discusses major trends in technology that are driving changes to data architecture. It covers:
1. Exponential growth in data and computing power due to Moore's Law, which is causing databases and hardware to rapidly scale up in size and capabilities.
2. Emergence of parallel processing and new hardware like GPUs, FPGAs and fast networks to handle large volumes of data in real-time. Memory and SSDs are replacing disks.
3. These changes require new architectural approaches compared to traditional centralized and client-server models. Event-driven architectures using stream processing and taking compute to the data are discussed.
4. The need to support different data flows like real-time and analytical,
This document provides an introduction to big data and MapReduce frameworks. It discusses:
- What big data is and examples of large datasets.
- An overview of MapReduce, including how it allows programmers to break problems into parallelizable map and reduce tasks.
- Details of how MapReduce frameworks like Apache Hadoop work, including distributed processing, fault tolerance, and the roles of mappers, reducers, and other components.
Sql server 2016 it just runs faster sql bits 2017 editionBob Ward
SQL Server 2016 includes several performance improvements that help it run faster than previous versions:
1. Automatic Soft NUMA partitions workloads across NUMA nodes when there are more than 8 CPUs per node to avoid bottlenecks.
2. Dynamic memory objects are now partitioned by CPU to avoid contention on global memory objects.
3. Redo operations can now be parallelized across multiple tasks to improve performance during database recovery.
The document discusses a company that faced scalability issues with their infrastructure as their product Inoreader grew in popularity. To address these issues, they migrated their servers to a fully virtualized environment using OpenNebula for virtualization and StorPool for distributed storage. This provided significant performance gains and increased capacity, allowing them to run the same workloads with fewer physical servers and benefit from high availability and redundancy. The migration process involved setting up StorPool nodes, virtualizing servers incrementally, and migrating VMs and data to the new infrastructure over multiple iterations.
1. Building exascale computers requires moving to sub-nanometer scales and steering individual electrons to solve problems more efficiently.
2. Moving data is a major challenge, as moving data off-chip uses 200x more energy than computing with it on-chip.
3. Future computers should optimize for data movement at all levels, from system design to microarchitecture, to minimize energy usage.
The document discusses the key factors in designing a high performance computing system: bandwidth, throughput, IOPS, and FLOPS. It describes a project to design a system to run seismic processing jobs within 50 days. The system was designed around the tasks, with 1250 dual-socket quad-core nodes, a 10 GigE network, and direct-connected disk storage. Initial startup problems were resolved by staggering job starts and optimizing I/O. The completed system met the project needs and was able to handle additional workloads.
Making the Most of In-Memory: More than SpeedInside Analysis
The document discusses how in-memory platforms are more than just speed - they are designed to efficiently exploit RAM and are optimized for analytics workloads that involve complex "crunching" of data. It explains that analytics workloads are CPU-intensive and benefit from techniques like parallelization across CPU cores. Additionally, the document notes that declining RAM prices and interest in advanced analytics are driving more adoption of in-memory platforms for both large and small data use cases.
Based on the popular blog series, join me in taking a deep dive and a behind the scenes look at how SQL Server 2016 “It Just Runs Faster”, focused on scalability and performance enhancements. This talk will discuss the improvements, not only for awareness, but expose design and internal change details. The beauty behind ‘It Just Runs Faster’ is your ability to just upgrade, in place, and take advantage without lengthy and costly application or infrastructure changes. If you are looking at why SQL Server 2016 makes sense for your business you won’t want to miss this session.
Making Sense of Spark Performance-(Kay Ousterhout, UC Berkeley)Spark Summit
This document summarizes the key findings from a study analyzing the performance bottlenecks in Spark data analytics frameworks. The study used three different workloads run on Spark and found that: network optimizations provided at most a 2% reduction in job completion time; CPU was often the main bottleneck rather than disk or network I/O; optimizing disk performance reduced completion time by less than 19%; and many straggler causes could be identified and addressed to improve performance. The document discusses the methodology used to measure bottlenecks and blocked times, limitations of the study, and reasons why the results differed from assumptions in prior works.
Vectorization is a new database technology that provides significant performance improvements through parallel processing. It fully utilizes multiple types of parallelism including symmetric multiprocessing (SMP), massively parallel processing (MPP) clusters, graphics processing units (GPUs), and vector processing instructions in Intel CPUs. Early adopters using fully vectorized databases are seeing dramatically lower costs and ability to handle new types of workloads and applications compared to traditional database technologies.
This document summarizes a lecture on file systems and performance. It discusses the read/write process for magnetic disks involving seek time, rotational latency, and transfer time. Typical numbers for these parameters in magnetic disks are provided. Flash/SSD memory is also discussed as an alternative storage technology with advantages like low latency, no moving parts, and high throughput but also drawbacks like limited endurance. The document introduces concepts from queueing theory that can help analyze the performance of I/O systems, like modeling request arrival and service times as probabilistic distributions. Key metrics like response time and throughput are discussed for evaluating I/O performance.
Spanner : Google' s Globally Distributed DatabaseAhmedmchayaa
Spanner is Google's globally distributed database that provides synchronous replication across data centers for strong consistency. It uses TrueTime to synchronize clocks across data centers and provide a consistent view of data to users. The architecture of Spanner involves splitting tables into shards called "splits" that are replicated across multiple zones for high availability. Transactions in Spanner are globally consistent yet remain highly available and partition tolerant, making Spanner a CA (Consistent and Available) system according to the CAP theorem.
This document provides a syllabus for a 3-month basic computer course covering topics like fundamentals of computers, Windows XP, email and internet, application software, and practical activities. The fundamentals section includes components of a computer, memory devices, types of computers and their characteristics. Windows XP topics cover basic terminology, desktop settings, MS DOS, Paint, WordPad and accessories. Email and internet section discusses email accounts, search engines and surfing websites. Application software focuses on Microsoft Word, PowerPoint and Excel. Practical activities include Windows 7 overview, burning CDs/DVDs, audio/video editing, hardware/networking basics and installing Windows.
Similar to Architecting for a scalable enterprise - John Davies (20)
The Unit Test is dead. Long live the Unit Test! - Colin VipursJAXLondon_Conference
This document contains code for an API endpoint that returns a JSON feed containing a single post from a user named Bob with the message "Hi there, I'm bob". The endpoint returns either a JSON string or a Feed object containing a single Post object.
Stop guessing, start testing – mobile testing done right - Timo EuteneuerJAXLondon_Conference
The document discusses the importance of mobile app testing and some of the challenges involved. It notes that 48% of users won't use an app again after encountering issues. Various testing approaches like manual testing and automation are presented, and it is argued that automation is key for high test coverage and reducing time to market. Challenges like device, OS, and screen size fragmentation are also covered.
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel UrmaJAXLondon_Conference
This document summarizes the past, present, and future of generics in Java and other languages. In the past, generics were added to Java to provide compile-time type safety. Presently, Java generics are commonly used with collections but wildcards are used less. Future areas of exploration include intersection types, declaration-site variance, value types, and unbounded wildcards. Generics usage continues to increase in complexity as new language features are added.
The document provides an overview of key considerations for startups raising venture capital funding. It discusses that the founding team is the most important factor and that investors seek a large total addressable market opportunity. Investors want to see the potential for big returns, usually through acquiring a meaningful ownership stake in a very large company. Raising venture capital is just the beginning, as building a successful company is a long journey.
The document discusses improving the readability, flexibility, and correctness of code through better use of types. It provides examples of refactoring code to use more descriptive types and interfaces. This helps make the code more self-documenting, flexible to change, and less prone to bugs by allowing types to validate correctness. The key message is that types provide important information and developers should listen to what their types are trying to tell them.
Thinking fast and slow with software development - Daniel BryantJAXLondon_Conference
The document discusses how human thinking involves two systems - system 1 which is fast, instinctive, and prone to errors, and system 2 which is slower, more deliberate, and reasoned. It provides examples of how cognitive biases from system 1 can negatively impact software development processes if not accounted for. Some recommendations include applying processes and collaboration to engage more deliberate system 2 thinking, regularly reflecting on decisions made, and continuing to learn from experiences and knowledge of others.
The java memory model and the mutability matrix of pain - Jamie AllenJAXLondon_Conference
This document discusses strategies for managing shared mutable state in multithreaded Java programs. It begins by covering key concepts like the Java Memory Model, concurrency vs parallelism, and how the heap works. It then discusses challenges like contention from threads trying to update shared state simultaneously. The document recommends approaches like using immutable objects where possible, and if mutability is needed, using volatile fields and snapshots to publish updates in a thread-safe manner while avoiding locks. It emphasizes understanding the visibility guarantees required and tradeoffs of different strategies.
Spring Boot for the Web Tier is a presentation about using Spring Boot for web applications. It covers topics like serving static content from the classpath or by using webjars. It also discusses supporting dynamic content through REST APIs and templating. Additionally, it explores embedding web servers like Tomcat directly in Spring Boot applications and customizing server properties. Finally, it provides examples of integrating with other web stacks like Ratpack and building applications with multiple projects.
Microservices from dream to reality in an hour - Dr. Holly CumminsJAXLondon_Conference
The document discusses microservices and compares them to monolithic applications. It covers how microservices allow for modularity, scaling, and evolution. Specific topics include slicing applications and databases, exposing and consuming services, service discovery tools like Consul and Kubernetes, and examples of microservices architectures using technologies like Docker, Java, and Cloud Foundry.
The document discusses the importance of managing dependencies and enforcing architectural rules in software projects to maintain quality over the long term. It proposes using a domain-specific language to formally define architecture in a way that can be automatically checked for violations. Well-defined and enforced architecture is presented as a way to avoid accumulating toxic technical debt that can bring projects to a standstill.
Peter Lawrey is the CEO of Chronicle Software. He has 7 years experience working as a Java developer for investment banks and trading firms. Chronicle Software helps companies migrate to high performance Java code and was involved in one of the first large Java 8 projects in production in December 2014. The company offers workshops, training, consulting and custom development services. The talk will cover reading and writing lambdas, capturing vs non-capturing lambdas, transforming imperative code to streams, mixing imperative and functional code, and taking Q&A.
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
The document compares Java and JavaScript for enterprise web applications. It finds that while JavaScript has a larger developer base and adoption according to metrics like GitHub repositories and StackOverflow surveys, Java remains dominant in enterprise applications and for server-side development. It discusses the different deployment models for each language, with JavaScript being ubiquitous in browsers while Java has a long history on servers. JavaScript code tends to be more concise, requiring around 1/3 less code on average. The document also evaluates performance, finding JavaScript is faster for I/O tasks while slower for computationally intensive work. It discusses challenges in optimizing dynamically typed languages like JavaScript.
Java generics past, present and future - Raoul-Gabriel Urma, Richard WarburtonJAXLondon_Conference
This document summarizes the past, present, and future of generics in Java and other languages. In the past, generics were added to Java to provide compile-time type safety. Presently, Java generics are commonly used with collections but wildcards are used less. Future areas of exploration include intersection types, declaration-site variance, value types, and unbounded wildcards. The document concludes that generics usage increases in complexity over time as new language features are added.
This document provides an overview and best practices for using new features introduced in Java SE 8, based on the author's experience using Java SE 8 for over a year. It covers lambdas, functional interfaces, exceptions, Optional, and streams. The author advocates following best practices such as using expression lambdas over block lambdas, avoiding unnecessary type declarations, and handling exceptions carefully when using functional interfaces. The document also discusses approaches for using Optional to replace null values.
Intuitions for scaling data centric architectures - Benjamin StopfordJAXLondon_Conference
This document discusses data architectures and scaling intuitions. It covers several key ideas:
1) Data access is most efficient when sequential, so architectures should optimize for sequential access patterns when possible.
2) Locality of data and caching help performance. Distributed systems can leverage partitioning and replication to improve locality.
3) Immutable, append-only designs avoid random access writes and allow flexibility in read patterns. Log structured designs fall into this category.
4) Columnar data formats and partitioning by column improve data access efficiency for analytic queries over large datasets.
Hybrid solutions – combining in memory solutions with SSD - Christos ErotocritouJAXLondon_Conference
The document provides an overview of different technologies used in big data solutions, including SQL, NoSQL, in-memory data grids (IMDG), key/value stores, and stream processing technologies. It discusses how SSD technology can help shape the big data landscape by enabling greater scale at lower costs. The document then discusses building a hybrid big data solution using an IMDG and SSD to create a common high-speed data store. It provides examples of using rich query semantics like nested queries, projections, and aggregations with data grids. Finally, it briefly discusses orchestration in big data, including deploying and managing big data applications over their lifecycle.
Feature bloat can negatively impact products by increasing complexity and overwhelming users with too many options. It also affects roadmaps and backlogs by making commitments difficult to keep, causing backlogs to grow too large, and complicating prioritization efforts. The document recommends cleaning up features to reduce bloat, estimating stories in points rather than hours to provide a relative scale, and focusing on business value and risk over large estimates when prioritizing work.
This document discusses tools and techniques for improving the developer experience when working with microservices using Spring Cloud. It covers using Docker for local development of database and middleware services, service discovery and autoconfiguration with Spring Cloud, provisioning systems for testing using Docker Compose and cloud platforms, debugging tools like log levels and actuator endpoints, stubbing and mocking dependent services, and hot reloading of code during development.
The document discusses garbage collection (GC) pauses in the Java Virtual Machine (JVM). It provides an overview of different GC algorithms like parallel GC, concurrent GC, and G1 GC used in HotSpot JVM. It explains reasons for long GC pauses and discusses options for tuning pause times. It also briefly mentions alternative GC implementations in other JVMs like Shenandoah and those used in Azul and JRocket VMs.
From 1 RPM to 1,000 RPM - succeeding in a software-defined economy - Sacha La...JAXLondon_Conference
The document discusses how software development practices have evolved over time through innovations like Agile, Scrum, and continuous integration/delivery. While these improved aspects like quality and flexibility, the document argues they did not fully realize the potential of bringing development practices to the business as a whole. It advocates applying concepts like continuous delivery, automation, and fast iteration across entire businesses to better meet customer needs. The document provides steps companies can take to embrace these new approaches, starting with proofs of concept and growing iteratively. It positions software developers as ideally equipped to drive this change and its business benefits.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Using Query Store in Azure PostgreSQL to Understand Query PerformanceGrant Fritchey
Microsoft has added an excellent new extension in PostgreSQL on their Azure Platform. This session, presented at Posette 2024, covers what Query Store is and the types of information you can get out of it.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
Most important New features of Oracle 23c for DBAs and Developers. You can get more idea from my youtube channel video from https://youtu.be/XvL5WtaC20A
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
DDS Security Version 1.2 was adopted in 2024. This revision strengthens support for long runnings systems adding new cryptographic algorithms, certificate revocation, and hardness against DoS attacks.
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsPeter Muessig
The UI5 tooling is the development and build tooling of UI5. It is built in a modular and extensible way so that it can be easily extended by your needs. This session will showcase various tooling extensions which can boost your development experience by far so that you can really work offline, transpile your code in your project to use even newer versions of EcmaScript (than 2022 which is supported right now by the UI5 tooling), consume any npm package of your choice in your project, using different kind of proxies, and even stitching UI5 projects during development together to mimic your target environment.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
2. C24
2
PROBLEMS DON’T CHANGE, THEY JUST GET BIGGER
I’ve been working for 30 years now and I just see the same
problems over and over again - History repeating itself
It’s true we have some new ones but they’re just
reincarnations of the old ones
You could argue that IoT, social media & eCommerce are all
new (since I started anyway) but the problems are the
same…
Massive volumes of data
It needs parsing, filtering, sorting, analysing, alerts, triggers, reporting,
compliance… Same ol’ same ol’.
3. C24
3
30-ISH YEARS AGO
I can remember in 1987 we re-wrote a trading system
in Objective-C
In those days there was a “war” between Objective-C and C++
History tells us C++ won but it wasn’t a clear victory as Apple shows
us today
Anyway, one of the problems we had was loading in all
of the exchange rates as the system started up
We used 80386s (the latest 32 bit CPU)
The big machines had 1MB (yes 1 mega bytes) of RAM
WAN was a 2400 baud modem (2.4k bits ber second)
Network was 1MB token-ring (40k/sec on a good day)
20MB hard-disk on the top machines (80ms access time)
4. C24
4
SOUND FAMILIAR?
Hundreds of currency pairs (USD/GBP) - remember pre-Euro so more
currencies
A dozen forward rates (spot, 1 week, 1 month etc.)
Several changes per second (coming down the modem @ 2400 baud)
These are some of the problems we faced…
When the machines started up in the morning it
took along time to get the current snap-shot to the trader’s machines
Each new rate (GBP/USD=1.68750) took a long time to update on the
clients machines, something do to the new Object Oriented model we’d
used
Querying the data was slow
Storing and querying the historic data presented serious issues
5. C24
5
HARDWARE TO THE RESCUE!
You could do in a few seconds on an iPhone what took a day
to do in those days but that’s thanks to the hardware changes
NOT THE SOFTWARE
The problems and architecture remain the same, we just have
a lot more data because we’re now global
We want every trade quoted on every exchange in every
country on every trader’s desk in every office in every country
Competition has just meant that as soon as one bank does it,
you have to do better otherwise you lose the deals and go
bankrupt
6. C24
6
IT’S NOT JUST THE CPU
Networks speeds
20 years ago we used wired modems 38k (bits) was
good, we now expect mobile networks to give us 50+MB,
that’s >1000X
Screens
My laptop (2 years old) is 2880x1800 and “full colour”, 20 years ago
1024x768 in 16 colours was good but the real change is 3D & OpenGL
etc.
Low res 3D pie charts needed a maths co-processor to display them in
under a second today we expect realistic 3D in real-time on full resolution
Today’s graphics cards are computers within computers
Memory
We used to have to page 1MB of RAM in and out (memory banks), today
we have 16GB or RAM in a laptop and 128GB of SSD on a keyring
7. C24
7
RAW POWER
Apollo 11’s guidance computer had just 2k
of memory and 32k of read-only storage
But it got it to the moon - and back!
Most of the time :-)
The backup was a slide rule
Today you can compress a full 1080p
movie into about 1GB and watch it on your
mobile phone
Why then do we have problems getting XML into memory?
8. C24
8
50 YEARS ON AND MOORE’S LAW IS STILL WITH US
His article “Cramming more components onto
integrated circuits” predicted the future of transistor
density based on a simple doubling every 2 years
Every few years we’re told this
has to end but someone comes
up with a new idea and it just
keeps going
Eventually it will flatten but it’s got a long way to go yet
so there are exciting time ahead
9. C24
9
50 YEARS ON AND MOORE’S LAW IS STILL WITH US
His article “Cramming more components onto
integrated circuits” predicted the future of transistor
density based on a simple doubling every 2 years
Every few years we’re told this has to
end but someone comes up with a new
idea and it just keeps going
Eventually it will flatten but it’s got a
long way to go yet so there are exciting
time ahead
10. C24
10
SOFTWARE IS SLOWING US DOWN
Programmers are lazy, I’m one, I gave all my demos to
someone
else to write while I write these slides (thanks Iain)
We’ve added layer upon layer of abstraction to hide the
complexity and hardware - Good but it slows things down
We simplified programming with drag-n-drop
now even kindergarten kids can program
Twenty years ago Java was introduced to the
world, it took away all the problems we had
with memory management and hardware architectures
It was cool then and I think it’s still cool now but it does
have a lot of issues, many of which we can work around
12. C24
12
JAVA IS VERBOSE AND SLOW
OK, don’t get offended, Java is a great language and small
applications are often as fast as C/C++, the JIT compiler is
seriously powerful
BUT
For data high volume processing, distributed computing and
analytics Java performance sucks
BUT
It is still the best we have so we just need to improve the way it
works
13. C24
13
GARBAGE COLLECTION
Programmers make mistakes, in the days of C/C++ it
crashed or hung the machine today it just kills the hangs
or crashes the JVM
Memory management was supposed to help but you can
bring your entire machine to a grinding halt with ease…
Concatenating Strings in a loop
Adding to a collection and forgetting to clear it
Processing too much data
The JVM and Garbage Collection doesn’t fix your bad
programming it just limits the damage is can cause
This comes at a cost too
14. C24
14
SERIALISATION
Java Serialisation sucks - full stop!
It’s so bad there are over 2 dozen open source frameworks to replace it
Almost all of the In-Memory Data Grids (IMDGs) have alternatives to
native serialisation
A serialised Java object is usually larger in size than its XML equivalent
Even the process of serialisation and de-serialisation is slow, extremely
slow
We’ll come back to this later
15. C24
15
ANALYTICS & BIG DATA
There are essentially 4 options
Do it in memory on one machine - fast but limited size
Do it off disk on one machine - slow due to disk I/O and limited CPU
Use distributed memory - faster but not linearly faster than one
machine
Use distributed disk - fast due to more CPU but limited by disk I/O
If we could somehow improve GC, network serialisation
and disk I/O we could vastly improve on the latency
(time for results) and throughput (complexity of results)
Heard of Hadoop and Spark?
16. C24
16
HADOOP
To run a Hadoop query…
First understand the data you’re analysing so that you can extract it
Write some code to extract, transform and load the data into HBase/
HDFS
This can take days or weeks to code
And can take hours or days to run
Now fire up Hadoop to get your answer - more time because it’s on
disk and distributed - It’s SLOW
Make one small change and you’re back to square one
Query to result can take weeks
17. C24
17
SPARK
Spark is faster because it runs in memory but it still has the
overhead of Java Serialisation for distribution
There are two modes, cached and un-cached
As the name would suggest un-cached is off disk so we’re back to
serialisation costs again
Spark can use Kryo to improve serialisation, this is good but
means writing code and it’s not practical for complex data
models
Spark is an improvement on Hadoop but still limited by Java
19. C24
19
IN THE MORE RECENT PAST…
At JAX Finance earlier this year I introduced the idea of
using binary instead of classic Java objects
This is really bringing the skills we used 20 years ago in
C and C++ back into the Java world
As long as your getter() returns the Object you
expected why should you care if it was stored in binary
or as a Java object?
This is after all the beauty of abstraction
Let’s just see what this does again…
20. C24
20
SAME API, JUST BINARY
Classic getter and setter vs. binary implementation
Identical API
22. C24
22
TIME TO ACCESS DATA…
I scaled by 1 million times simply because that’s roughly the ratio between an modern airplane and the
speed of light
Event Latency (approx.) Scaled x 1
million1 CPU cycle 0.3 ns (3.5 GHz) 0.3 ms (3.5 KHz)
Level 1 cache access 0.9 ns 0.9 ms
Level 2 cache access 2.8 ns 2.8 ms
Level 3 cache access 12.9 ns 12.9 ms
Main memory access (DRAM) 120 ns 120ms (1/8th sec)
Solid-state disk I/O (SSD) 50-150 µs 50 - 150 seconds
Read 1MB sequentially from SSD 1 ms 17 minutes
Rotational Disk I/0 1-10 ms 17 mins-2.8 hours
Read 1MB sequentially from Disk 20 ms 5.6 hours
Network SF to NY (round trip) 40 ms 11 hours
Network London to Tokyo (round trip) 81 ms 1 day
Network SF to Oz (round trip) 183 ms 2 days
TCP packet retransmit 1-3 s 2-6 weeks
23. C24
23
COMPARING…
These two graphs show the GC pause time during
message creation and serialisation
Left is “classic” Java
Right is the binary version
The top of the right hand graph is lower than the first rung of the left
(50ms)
24. C24
24
COMPARING…
These two graphs show the GC pause time during
message creation and serialisation
Left is “classic” Java
Right is the binary version
The top of the right hand graph is lower than the first
rung of the left (50ms)
25. C24
25
SERIALISATION
Serialisation was compared (by a client) to several dozen
serialisation frameworks
The test framework can be found here:
https://github.com/eishay/jvm-serializers/
Preon was either at the top or within 5%
of the top
However the use-case was very
simple, SDOs work better with more
complex models
0 500 1000 1500 2000 2500 3000 3500
c24(sdo
wobly
wobly(compact
protostuff
protobuf/protostuff
fst(flat(pre
protobuf/protostuff(runtime
kryo(opt
protobuf
protostuff(graph
protostuff(graph(runtime
thrift
json/dsl(platform
fst(flat
smile/jackson/manual
json/fastjson/databind
cbor/jackson/manual
jboss(marshalling(river(ct(manual
msgpack/manual
scala/sbinary
Serialise
Deserialise
0 5000 10000 15000 20000 25000 30000 35000 40000
c24(sdo
wobly
wobly(compact
protostuff
protobuf/protostuff
fst(flat(pre
protobuf/protostuff(runtime
kryo(opt
protobuf
protostuff(graph
protostuff(graph(runtime
thrift
json/dsl(platform
fst(flat
smile/jackson/manual
json/fastjson/databind
cbor/jackson/manual
jboss(marshalling(river(ct(manual
msgpack/manual
scala/sbinary
msgpack/databind
smile/jackson+afterburner/databind
avro(specific
json(col/jackson/databind
cbor/jackson+afterburner/databind
fst
smile/jackson/databind
json/jackson/manual
json/protostuff(manual
jboss(marshalling(river(ct
json/jackson(jr/databind
xml/aalto(manual
json/json(smart/manual(tree
xml/woodstox(manual
json/gson/manual
xml/jackson/databind
hessian
json/gson/manual(tree
xml/javolution/manual
xml/xstream+c(fastinfo
xml/xstream+c(aalto
json/org.json/manual(tree
xml/xstream+c(woodstox
bson/mongodb/manual
xml/exi(manual
xml/xstream+c
jboss(marshalling(river
java(built(in
java(built(in(serializer
Serialise
Deserialise
26. C24
26
SERIALISATION
Serialisation was compared (by a client) to several dozen
serialisation frameworks
The test framework can be found here:
https://github.com/eishay/jvm-serializers/
C24 is either at the top or within 5%
of the top
However the use-case was very
simple, SDOs work better with more
complex models
0 5000 10000 15000 20000 25000 30000 35000 40000
c24(sdo
wobly
wobly(compact
protostuff
protobuf/protostuff
fst(flat(pre
protobuf/protostuff(runtime
kryo(opt
protobuf
protostuff(graph
protostuff(graph(runtime
thrift
json/dsl(platform
fst(flat
smile/jackson/manual
json/fastjson/databind
cbor/jackson/manual
jboss(marshalling(river(ct(manual
msgpack/manual
scala/sbinary
msgpack/databind
smile/jackson+afterburner/databind
avro(specific
json(col/jackson/databind
cbor/jackson+afterburner/databind
fst
smile/jackson/databind
json/jackson/manual
json/protostuff(manual
jboss(marshalling(river(ct
json/jackson(jr/databind
xml/aalto(manual
json/json(smart/manual(tree
xml/woodstox(manual
json/gson/manual
xml/jackson/databind
hessian
json/gson/manual(tree
xml/javolution/manual
xml/xstream+c(fastinfo
xml/xstream+c(aalto
json/org.json/manual(tree
xml/xstream+c(woodstox
bson/mongodb/manual
xml/exi(manual
xml/xstream+c
jboss(marshalling(river
java(built(in
java(built(in(serializer
Serialise
Deserialise
0 500 1000 1500 2000 2500 3000 3500
c24(sdo
wobly
wobly(compact
protostuff
protobuf/protostuff
fst(flat(pre
protobuf/protostuff(runtime
kryo(opt
protobuf
protostuff(graph
protostuff(graph(runtime
thrift
json/dsl(platform
fst(flat
smile/jackson/manual
json/fastjson/databind
cbor/jackson/manual
jboss(marshalling(river(ct(manual
msgpack/manual
scala/sbinary
Serialise
Deserialise
27. C24
27
SDOS & IMDGS
Performance and memory gain can be very significant
The following demonstrates different storage capacity of XML,
standard Java vs binary for storing XML (in this case FpML and
ISO-20022)
The IMDG in this specific case is Coherence but others are similar
28. C24
28
BINARY WITH SPARK
Compare the red (cached memory) and there’s no
difference but compare cached disk
Since binary serialisation to/from disk is almost cost-
free we see almost no degradation from disk to memory
Using binary with disk
is about 20 times faster
than the best alternative
and less than half the
speed of cached
memory
Using binary on disk with Spark offers the volumes of
Hadoop and performance of Spark
29. C24
29
WHAT’S LEFT TO TALK ABOUT?
Spring, Groovy, C#, Go, Scala, Clojure, Swift
MicroServices, Docker, CloudFoundry
ESBs, SOA, JEE
Databases, RDBMS and NoSQL
In-Memory Data Grids (IMDGs)
Cloud
IoT
PaaS / SaaS / IaaS / YaSaaS
Virtualisation
30. C24
30
NO MORE TIME SADLY
Spring, Groovy, C#, Go, Scala, Clojure, Swift
MicroServices, Docker, CloudFoundry
ESBs, SOA, JEE
Databases, RDBMS and NoSQL
In-Memory Data Grids (IMDGs)
Cloud
IoT
PaaS / SaaS / IaaS / YaSaaS
Virtualisation
31. C24
31
SPRING BOOT
Spring Boot is becoming the de facto framework for Java-
based applications
With very little else a Spring Boot application can be deployed
on a local machine, onto a server, a data centre (private cloud)
or the cloud (a data centre where you don’t know the addrsss)
Unless you’re going enterprise scale with configurable
workflow, high availability, automated scalability then it’s
difficult to justify MicroServices
Given the option we use Spring Boot with our clients and they
seem to get hooked on the simplicity and power
32. C24
32
MICROSERVICES
There are two types of MicroService or two main “needs”
To be able to package the entire application and deploy it in one go
To be able to manage deployment and life-cycle of large scale systems
The Java Virtual Machine with Spring Boot and Maven
(cough splutter) goes a long way to providing all the
functionality of the first need
At enterprise scale then we need more than a packaged
application - Cloud Foundry / BlueMix etc.
This is usually in the realm of the Dev Ops guys (and gals) not the Java/
Spring programmer
In a perfect world programmers need an abstraction from MicroServices
implementations, Spring Boot goes a long way to providing this