Brendan O'Bra discusses the journey of migrating a monolithic Java application called Gumby to microservices using Scala and Akka. Originally a single large codebase, Gumby was split into modular microservices composed together into "microliths" to allow incremental development. The microliths helped address challenges of scaling, deployment, and team collaboration. The architecture eventually evolved to true microservices running independently in a Docker swarm. Challenges included understanding Akka clustering, databases, and tooling choices.
Real world serverless - architecture, patterns and lessons learnedDavid Schmitz
Serverless computing is quite the rage today. It enables companies to move to a platform with basically limitless capacity and it allows teams to embrace DevOps right from the start. So, this is literally the silver bullet we have waited for and everybody should embrace it. Right?
Well, it depends…
In this talk we will look at different scenarios and approaches to building and designing complex Serverless applications on AWS beyond your basic “Hello World”. We will cover architectures and patterns that help in adopting Serverless, for example how to design your Serverless landscape without getting lost in event-driven-chaos. Covering the whole development process, we will look at real world problems like testing, debugging, monitoring and securing your Serverless applications. Furthermore, we will use some of the essential tools that make working with AWS Lambda easier, such using Claudia.JS. Finally, we will discuss the drawbacks and misconceptions, like potential vendor lock-in and the illusion of NoOps.
If you find Serverless computing interesting, then this talk will show you how to adapt this architectural style without getting burned too much.
Serverless Computing ist der nächste logische Schritt, um Anwendungen in die Cloud zu bringen. Im Kern von Amazons Serverless Computing Angebots liegt AWS Lambda. AWS Lambda ist unter anderem durch den Sprachassistenten Alexa populär geworden, wird aber in unterschiedlichen Bereichen für innovative Produkte verwendet. Dieser Vortrag stellt Serverless Computing anhand eines Amazon Alexa Skills vor, der das Konferenzprogramm der Devcon 2017 als Sprachassistent anbietet. Wir schauen im Rahmen des Beispiels auf die architekturellen und infrastrukturellen Herausforderungen diese Event-Driven Ansatzes und lernen, wo Serverless Computing sinnvoll ist und wo andere Ansätze besser geeignet sein können. Schliesslich werfen wir noch einen kurzen Blick auf Alternativen zu AWS Lambda und bewerten die Vor- und Nachteile.
The document summarizes Adrian Cockcroft's experience giving talks about Netflix's approach to technology over time. It notes that initially people reacted skeptically, saying Netflix's approach was crazy and wouldn't work (2009-2010). Later, people said it could only work for large companies like Netflix (2011). By 2012, people said they wanted to adopt a similar approach but couldn't. The document outlines key lessons learned from Cockcroft's time at Netflix, including that speed wins in the marketplace and removing friction from product development helps enable faster innovation.
Data Consistency in Distributed Systems with Akka Distributed DataDmitry Martyanov
Data consistency is very important problem in Distributed Environment. Flow based approaches usually don't provide good availability and fault tolerance to achieve it. This presentation is about CRDT - data type based approach to achieve convergent state of your data. This approach is used in Akka Cluster.
Globalization has led to the rise of civic society in developing countries as a counterbalance to unregulated markets. Civil societies now propose interventions to ease the negative impacts of globalization. However, most NGOs in developing countries lack proper legal frameworks and funding sources, limiting their effectiveness. The author analyzes the cases of Mexico and Romania to understand how to establish legal frameworks and global philanthropic standards that support civil society organizations and enable them to act as a balance to state power during periods of economic globalization.
Este pasaje bíblico del Salmo 24 describe a Dios como el dueño de la tierra y todo lo que hay en ella. Luego hace tres preguntas: ¿Quién podrá subir al monte de Jehová?, ¿Quién podrá estar en su lugar santo? Solo aquellos que tengan las manos limpias y el corazón puro, que no juren en vano ni se eleven a cosas vanas.
Real world serverless - architecture, patterns and lessons learnedDavid Schmitz
Serverless computing is quite the rage today. It enables companies to move to a platform with basically limitless capacity and it allows teams to embrace DevOps right from the start. So, this is literally the silver bullet we have waited for and everybody should embrace it. Right?
Well, it depends…
In this talk we will look at different scenarios and approaches to building and designing complex Serverless applications on AWS beyond your basic “Hello World”. We will cover architectures and patterns that help in adopting Serverless, for example how to design your Serverless landscape without getting lost in event-driven-chaos. Covering the whole development process, we will look at real world problems like testing, debugging, monitoring and securing your Serverless applications. Furthermore, we will use some of the essential tools that make working with AWS Lambda easier, such using Claudia.JS. Finally, we will discuss the drawbacks and misconceptions, like potential vendor lock-in and the illusion of NoOps.
If you find Serverless computing interesting, then this talk will show you how to adapt this architectural style without getting burned too much.
Serverless Computing ist der nächste logische Schritt, um Anwendungen in die Cloud zu bringen. Im Kern von Amazons Serverless Computing Angebots liegt AWS Lambda. AWS Lambda ist unter anderem durch den Sprachassistenten Alexa populär geworden, wird aber in unterschiedlichen Bereichen für innovative Produkte verwendet. Dieser Vortrag stellt Serverless Computing anhand eines Amazon Alexa Skills vor, der das Konferenzprogramm der Devcon 2017 als Sprachassistent anbietet. Wir schauen im Rahmen des Beispiels auf die architekturellen und infrastrukturellen Herausforderungen diese Event-Driven Ansatzes und lernen, wo Serverless Computing sinnvoll ist und wo andere Ansätze besser geeignet sein können. Schliesslich werfen wir noch einen kurzen Blick auf Alternativen zu AWS Lambda und bewerten die Vor- und Nachteile.
The document summarizes Adrian Cockcroft's experience giving talks about Netflix's approach to technology over time. It notes that initially people reacted skeptically, saying Netflix's approach was crazy and wouldn't work (2009-2010). Later, people said it could only work for large companies like Netflix (2011). By 2012, people said they wanted to adopt a similar approach but couldn't. The document outlines key lessons learned from Cockcroft's time at Netflix, including that speed wins in the marketplace and removing friction from product development helps enable faster innovation.
Data Consistency in Distributed Systems with Akka Distributed DataDmitry Martyanov
Data consistency is very important problem in Distributed Environment. Flow based approaches usually don't provide good availability and fault tolerance to achieve it. This presentation is about CRDT - data type based approach to achieve convergent state of your data. This approach is used in Akka Cluster.
Globalization has led to the rise of civic society in developing countries as a counterbalance to unregulated markets. Civil societies now propose interventions to ease the negative impacts of globalization. However, most NGOs in developing countries lack proper legal frameworks and funding sources, limiting their effectiveness. The author analyzes the cases of Mexico and Romania to understand how to establish legal frameworks and global philanthropic standards that support civil society organizations and enable them to act as a balance to state power during periods of economic globalization.
Este pasaje bíblico del Salmo 24 describe a Dios como el dueño de la tierra y todo lo que hay en ella. Luego hace tres preguntas: ¿Quién podrá subir al monte de Jehová?, ¿Quién podrá estar en su lugar santo? Solo aquellos que tengan las manos limpias y el corazón puro, que no juren en vano ni se eleven a cosas vanas.
Cuatro velas representan la paz, la fe, el amor y la esperanza. Las primeras tres velas se van apagando una a una mientras hablan sobre cómo la gente ha perdido esos valores en sus vidas. Cuando un niño entra y ve las velas apagadas, la cuarta vela, la Esperanza, le dice que mientras tenga fuego podrá encender las otras velas de nuevo. La Esperanza enciende las otras velas, dando el mensaje de que la esperanza puede revivir los otros valores cuando se han perdido.
This document discusses how functional programming with higher-order functions can improve code reuse, readability, and correctness compared to object-oriented and imperative styles. It introduces common higher-order functions like map, filter, and reduce. It then applies these concepts to solve a mine sweeping problem, representing the game board functionally and extracting mine location coordinates in a reusable way. Overall it advocates embracing higher-order functions to build modular, composable solutions.
Ranadev Chatterjee has over 25 years of experience in quality assurance and production management. He is currently the QA Manager at Windals Auto Ltd in Indore, India. Prior to this, he held QA roles at Methodex Systems Ltd and Hi-Tech Metal Formings Pvt Ltd. He has extensive experience implementing quality management systems, evaluating vendors, and improving processes. Chatterjee aims to drive growth through quality and has a track record of reducing defects and costs.
La Unión Europea ha acordado un paquete de sanciones contra Rusia por su invasión de Ucrania. Las sanciones incluyen restricciones a las importaciones de productos rusos de alta tecnología y a las exportaciones de bienes de lujo a Rusia. Además, se congelarán los activos de varios oligarcas rusos y se prohibirá el acceso de los bancos rusos a los mercados financieros de la UE.
The document provides information about Burt Design, a marketing and design firm located in Florida. It includes examples of logos and advertisements the firm has created for healthcare clients such as hospitals and medical organizations. The clients represented come from across the country and include large hospital systems as well as specialty medical societies. The pieces showcase Burt Design's ability to create visual identities and marketing campaigns for a variety of healthcare services and needs.
Стратегия развития позитивного имиджа НТУУ КПИ, 2010 годreputationlab
В 2010 году, в рамках студенческого фестиваля, была разработана стратегия продвижения НТУУ КПИ.
Стратегия была разработана студенческой группой под руководством только созданной ReputationLab.
Swathi EV has over 1.5 years of experience in big data technologies such as Hadoop, Pig, Hive, HBase, and Flume. She is proficient in Pig Latin, Hive QL, and Java MapReduce. She has worked on multiple projects involving data analytics, ETL, and report generation for clients in banking, insurance, and other industries. Swathi holds a B.Tech degree and is seeking a role that allows her to further develop her big data skills.
Scala bay meetup 9.17.2015 - Presentation 1Brendan O'Bra
The document discusses Comcast's journey towards continuous delivery. It describes how Comcast has transitioned from a process where deployments were done by many humans over much time, to one where a single human and many machines can deploy changes much faster. It introduces "Gumby", a tool developed by Comcast to automate deployments across various cloud platforms like vSphere, Openstack, and EC2 using technologies like Puppet, Git, and Cloud-Init. Gumby started as an experiment using Play and Akka but was rewritten using Spray and Akka to scale deployments. It is now used to deploy around 60% of Comcast's X1 backend infrastructure.
Victoria Barterian is a student at Wayne State University pursuing a degree in Secondary Education with a focus on Biology and a minor in Health. She has extensive experience teaching swimming to people of all ages as well as coaching swim teams. Currently, she is the head varsity swim coach for Warren Woods Tower High School while continuing her education and maintaining a 3.6 GPA.
O AdaptiveSEO da WSI nos orienta a fazer o melhor do Marketing Digital - com ou sem Google. Não importa o buscador, sua Marca sempre estará bem posicionada diante dos seus clientes potenciais.
Chingodza Tinotenda is pursuing a National Diploma in Plant Engineering at Harare Polytechnic from 2015-2017. He has a background in mechanical engineering and has worked in various roles including as a machine shop engineer trainee, traffic statistician trainee, fitter and turner, telecommunications groundsman, and currently as a shelf packer. He is goal oriented with strong interpersonal skills and technical skills including in Microsoft Office, AutoCAD, and computer literacy generally.
It’s bigger. It’s tougher. It’s coming into effect on 3 July 2016. It’s the new Market Abuse Regulation (MAR).
MAR widens greatly the scope of instruments and actions subject to anti-market abuse regulations. It also creates a new regime to govern market soundings, and imposes tough new obligations on regulated firms.
We talked through the MAR journey and discussed how it might affect firms.
Dokumen tersebut membahas sejarah berdirinya beberapa kerajaan kuno di Indonesia seperti Kerajaan Kutai, Tarumanegara, Sriwijaya, Mataram Hindu, Singasari, Majapahit, Demak beserta raja-raja yang memerintah.
Aggregate programming is a novel paradigm that addresses, at the core, many issues commonly found in the development of large-scale, situated, self-adaptive systems. It is a particular macro-programming approach where a developer expresses the behaviour of the system at the aggregate-level, by targeting the distributed computational machine which is given by the entire set of (possibly mobile and heterogeneous) networked devices pervading the environment. It is the model that takes care of turning a system-level behaviour specification into the concrete, device-centric programs executed locally by each component.
Aggregate computing is formally grounded in the field calculus, a minimal functional language that works with computational fields, i.e., distributed data structures mapping devices (digital representatives of space-time portions) to computational objects. Fields are a useful unifying abstraction for drawing a connection between the physical and the computational world, and between the local and global programming viewpoints. This approach is compositional, allowing to define layers of building blocks of increasing abstraction, and is also amenable to formal analyses.
In this talk, I will present scafi (SCAla with computational FIels), an aggregate computing framework for the Scala programming language which provides (i) an internal DSL for expressing aggregate computations as well as (ii) a library support for the configuration and execution of aggregate systems. There is no need to learn ad-hoc external DSLs anymore: with scafi, Scala programmers can instantaneously start playing with this new, intriguing development approach!
With Java 8 adoption skyrocketing, is Scala still relevant? In the opinion of this session’s speaker, the answer is an unequivocal yes. To make his point, he showcases practical examples where Scala's features provide a definitive advantage over Java 8. The session covers
• Effective logging with traits and by-name parameters
• Day to Day Type inference
• Pattern matching for fun and profit
• Type-safe easy generic Class<t> passing
• Concise third party enhancement
Hopefully you’ll leave the session with a better idea of the advantages Scala offers and perhaps a fresh outlook on software design.
- Amazon EKS and AWS Fargate were highlighted as two services for running containers on AWS.
- Amazon EKS allows users to easily run Kubernetes on AWS and manages the control plane, while AWS Fargate allows running containers without managing servers.
- AWS Fargate launches containers without needing to provision or manage servers, providing a simpler experience for developing and operating containerized applications.
Montréal AWS Users United: Let's go Serverless!Daniel Zivkovic
The document summarizes an upcoming meetup on serverless computing hosted by an AWS user group. The meetup will include introductions, a presentation on serverless computing by Daniel ZivKovic, and time for discussion and networking. TriNimbus, Daniel's employer, sponsors AWS meetups across Canada. The presentation agenda covers definitions of serverless, functions-as-a-service, popular use cases, and tools for building serverless applications.
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Chef
From ChefConf 2015.
https://youtu.be/OU3F_UU-Jpc
Are you a cow, a pet, a canary, or a unicorn? Do you prefer blue/green, or red/green/refactor? Who the heck is Brent?
Welcome to DevOps, where we are all about breaking down walls. But, we've created a private dialect, full of familiar words with unfamiliar meanings, and in-jokes upon in-jokes. Many newcomers wish there was a glossary for the movement. Time to be inclusive!
In this fun session, we'll go over some of the more unintuitive terms (being a goat is a good thing!) and the backstories behind them. We'll have an extended audience participation segment in which you can ask about words you've heard.
Composability -
a system design principle that deals with the inter-relationships of components. A highly
composable system provides components that can be selected and assembled in various combinations to satisfy specific user requirements
Cuatro velas representan la paz, la fe, el amor y la esperanza. Las primeras tres velas se van apagando una a una mientras hablan sobre cómo la gente ha perdido esos valores en sus vidas. Cuando un niño entra y ve las velas apagadas, la cuarta vela, la Esperanza, le dice que mientras tenga fuego podrá encender las otras velas de nuevo. La Esperanza enciende las otras velas, dando el mensaje de que la esperanza puede revivir los otros valores cuando se han perdido.
This document discusses how functional programming with higher-order functions can improve code reuse, readability, and correctness compared to object-oriented and imperative styles. It introduces common higher-order functions like map, filter, and reduce. It then applies these concepts to solve a mine sweeping problem, representing the game board functionally and extracting mine location coordinates in a reusable way. Overall it advocates embracing higher-order functions to build modular, composable solutions.
Ranadev Chatterjee has over 25 years of experience in quality assurance and production management. He is currently the QA Manager at Windals Auto Ltd in Indore, India. Prior to this, he held QA roles at Methodex Systems Ltd and Hi-Tech Metal Formings Pvt Ltd. He has extensive experience implementing quality management systems, evaluating vendors, and improving processes. Chatterjee aims to drive growth through quality and has a track record of reducing defects and costs.
La Unión Europea ha acordado un paquete de sanciones contra Rusia por su invasión de Ucrania. Las sanciones incluyen restricciones a las importaciones de productos rusos de alta tecnología y a las exportaciones de bienes de lujo a Rusia. Además, se congelarán los activos de varios oligarcas rusos y se prohibirá el acceso de los bancos rusos a los mercados financieros de la UE.
The document provides information about Burt Design, a marketing and design firm located in Florida. It includes examples of logos and advertisements the firm has created for healthcare clients such as hospitals and medical organizations. The clients represented come from across the country and include large hospital systems as well as specialty medical societies. The pieces showcase Burt Design's ability to create visual identities and marketing campaigns for a variety of healthcare services and needs.
Стратегия развития позитивного имиджа НТУУ КПИ, 2010 годreputationlab
В 2010 году, в рамках студенческого фестиваля, была разработана стратегия продвижения НТУУ КПИ.
Стратегия была разработана студенческой группой под руководством только созданной ReputationLab.
Swathi EV has over 1.5 years of experience in big data technologies such as Hadoop, Pig, Hive, HBase, and Flume. She is proficient in Pig Latin, Hive QL, and Java MapReduce. She has worked on multiple projects involving data analytics, ETL, and report generation for clients in banking, insurance, and other industries. Swathi holds a B.Tech degree and is seeking a role that allows her to further develop her big data skills.
Scala bay meetup 9.17.2015 - Presentation 1Brendan O'Bra
The document discusses Comcast's journey towards continuous delivery. It describes how Comcast has transitioned from a process where deployments were done by many humans over much time, to one where a single human and many machines can deploy changes much faster. It introduces "Gumby", a tool developed by Comcast to automate deployments across various cloud platforms like vSphere, Openstack, and EC2 using technologies like Puppet, Git, and Cloud-Init. Gumby started as an experiment using Play and Akka but was rewritten using Spray and Akka to scale deployments. It is now used to deploy around 60% of Comcast's X1 backend infrastructure.
Victoria Barterian is a student at Wayne State University pursuing a degree in Secondary Education with a focus on Biology and a minor in Health. She has extensive experience teaching swimming to people of all ages as well as coaching swim teams. Currently, she is the head varsity swim coach for Warren Woods Tower High School while continuing her education and maintaining a 3.6 GPA.
O AdaptiveSEO da WSI nos orienta a fazer o melhor do Marketing Digital - com ou sem Google. Não importa o buscador, sua Marca sempre estará bem posicionada diante dos seus clientes potenciais.
Chingodza Tinotenda is pursuing a National Diploma in Plant Engineering at Harare Polytechnic from 2015-2017. He has a background in mechanical engineering and has worked in various roles including as a machine shop engineer trainee, traffic statistician trainee, fitter and turner, telecommunications groundsman, and currently as a shelf packer. He is goal oriented with strong interpersonal skills and technical skills including in Microsoft Office, AutoCAD, and computer literacy generally.
It’s bigger. It’s tougher. It’s coming into effect on 3 July 2016. It’s the new Market Abuse Regulation (MAR).
MAR widens greatly the scope of instruments and actions subject to anti-market abuse regulations. It also creates a new regime to govern market soundings, and imposes tough new obligations on regulated firms.
We talked through the MAR journey and discussed how it might affect firms.
Dokumen tersebut membahas sejarah berdirinya beberapa kerajaan kuno di Indonesia seperti Kerajaan Kutai, Tarumanegara, Sriwijaya, Mataram Hindu, Singasari, Majapahit, Demak beserta raja-raja yang memerintah.
Aggregate programming is a novel paradigm that addresses, at the core, many issues commonly found in the development of large-scale, situated, self-adaptive systems. It is a particular macro-programming approach where a developer expresses the behaviour of the system at the aggregate-level, by targeting the distributed computational machine which is given by the entire set of (possibly mobile and heterogeneous) networked devices pervading the environment. It is the model that takes care of turning a system-level behaviour specification into the concrete, device-centric programs executed locally by each component.
Aggregate computing is formally grounded in the field calculus, a minimal functional language that works with computational fields, i.e., distributed data structures mapping devices (digital representatives of space-time portions) to computational objects. Fields are a useful unifying abstraction for drawing a connection between the physical and the computational world, and between the local and global programming viewpoints. This approach is compositional, allowing to define layers of building blocks of increasing abstraction, and is also amenable to formal analyses.
In this talk, I will present scafi (SCAla with computational FIels), an aggregate computing framework for the Scala programming language which provides (i) an internal DSL for expressing aggregate computations as well as (ii) a library support for the configuration and execution of aggregate systems. There is no need to learn ad-hoc external DSLs anymore: with scafi, Scala programmers can instantaneously start playing with this new, intriguing development approach!
With Java 8 adoption skyrocketing, is Scala still relevant? In the opinion of this session’s speaker, the answer is an unequivocal yes. To make his point, he showcases practical examples where Scala's features provide a definitive advantage over Java 8. The session covers
• Effective logging with traits and by-name parameters
• Day to Day Type inference
• Pattern matching for fun and profit
• Type-safe easy generic Class<t> passing
• Concise third party enhancement
Hopefully you’ll leave the session with a better idea of the advantages Scala offers and perhaps a fresh outlook on software design.
- Amazon EKS and AWS Fargate were highlighted as two services for running containers on AWS.
- Amazon EKS allows users to easily run Kubernetes on AWS and manages the control plane, while AWS Fargate allows running containers without managing servers.
- AWS Fargate launches containers without needing to provision or manage servers, providing a simpler experience for developing and operating containerized applications.
Montréal AWS Users United: Let's go Serverless!Daniel Zivkovic
The document summarizes an upcoming meetup on serverless computing hosted by an AWS user group. The meetup will include introductions, a presentation on serverless computing by Daniel ZivKovic, and time for discussion and networking. TriNimbus, Daniel's employer, sponsors AWS meetups across Canada. The presentation agenda covers definitions of serverless, functions-as-a-service, popular use cases, and tools for building serverless applications.
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Chef
From ChefConf 2015.
https://youtu.be/OU3F_UU-Jpc
Are you a cow, a pet, a canary, or a unicorn? Do you prefer blue/green, or red/green/refactor? Who the heck is Brent?
Welcome to DevOps, where we are all about breaking down walls. But, we've created a private dialect, full of familiar words with unfamiliar meanings, and in-jokes upon in-jokes. Many newcomers wish there was a glossary for the movement. Time to be inclusive!
In this fun session, we'll go over some of the more unintuitive terms (being a goat is a good thing!) and the backstories behind them. We'll have an extended audience participation segment in which you can ask about words you've heard.
Composability -
a system design principle that deals with the inter-relationships of components. A highly
composable system provides components that can be selected and assembled in various combinations to satisfy specific user requirements
Cisco Live: Containers on Enterprise Compute and NetworksMichael Duarte
Containers are the next evolutionary step in how applications are managed and consumed. Allowing application teams to control and optimize their application deployment process. Along with the advantages provided to application teams, it's also a dynamic shift for data center design. Allowing for better resource utilization, and management resulting in both cost savings and faster IT. This session will explain how Cisco IT has delivered this new paradigm in Cloud Technology by using Cisco ACI, Cisco UCS and open-source solutions like Kubernetes.
The document describes an event called Plain Concepts Tech Day that included several presentations and topics: CSS Grid Layout, developing multiplatform applications with Xamarin, Docker basics, real-time bus tracking with Azure Relay, .NET Core and Raspberry Pi, generating API clients from OpenAPI specifications, and continuous delivery with Visual Studio Team Services. It also provides an overview of the OpenAPI Specification, its history and evolution, and Swagger/NSWAG tools for generating clients and documentation from OpenAPI files.
Continuous Delivery, Reactive Manifesto, Microservices, and DevOps are only few of the great ideas and practices that are currently transforming the way we work in IT. For people working in start-ups or with green field projects all this feels natural, you can expect it, you can take it for granted.
Too perfect, and way too easy J If you look for real challenges, look at the Enterprise world.
As a Tech Lead in Danske Bank I have the responsibility to help steering our Enterprise and ignite the evolution process that is needed to stay competitive in today’s markets. Through this quest for Agility in the extreme conditions of an Enterprise we are transforming decades of legacy into actual competitive advantage, enabling us to define and deliver brand new financial services at the rate and speed of start-ups.
Akka-chan's Survival Guide for the Streaming WorldKonrad Malawski
In this talk we dive into the various kinds of "Streaming", what it actually means, where to use which technology and specifically take a look at Akka Streams and their specific use case and strengths.
How to build a social network on Serverless (AWS Community Summit)Yan Cui
Many people are building different workloads using serverless technologies these days, but how would a non-trivial system such as a social network look like on serverless?
In this talk Yan will discuss his journey of migrating a social network startup to serverless, and how his team was able to improve performance, scalability and feature delivery using serverless technologies.
Yan will discuss how serverless technologies such as Lambda are used to implement each part of their system, including search, push notifications, timeline, user recommendations, and business intelligence. If you're wondering how serverless can be used to solve a wide variety of challenges in your business, this is the talk for you.
How to build a social network on serverless | Yan CuiAWSCOMSUM
Many people are building different workloads using serverless technologies these days, but how would a non-trivial system such as a social network look like on serverless?
In this talk Yan will discuss his journey of migrating a social network startup to serverless, and how his team was able to improve performance, scalability and feature delivery using serverless technologies.
Yan will discuss how serverless technologies such as Lambda are used to implement each part of their system, including search, push notifications, timeline, user recommendations, and business intelligence. If you're wondering how serverless can be used to solve a wide variety of challenges in your business, this is the talk for you.
How to build a social network on serverlessYan Cui
Many people are building different workloads using serverless technologies these days, but how would a non-trivial system such as a social network look like on serverless?
In this talk Yan will discuss his journey of migrating a social network startup to serverless, and how his team was able to improve performance, scalability and feature delivery using serverless technologies.
Yan will discuss how serverless technologies such as Lambda are used to implement each part of their system, including search, push notifications, timeline, user recommendations, and business intelligence. If you're wondering how serverless can be used to solve a wide variety of challenges in your business, this is the talk for you.
Vislab has transitioned from a service-oriented organization to focus more on research using open-source and emerging technologies. It now has access to several computer clusters for graphics processing. Projects include the Access-Grid collaboration tool, the Chromium graphics cluster, and exploring open-source rendering software like Yafray. The goal is to enable real-time collaboration on 3D data across applications, clusters, and networks using tools like Verse. Challenges include usability and whether artists will embrace open-source approaches.
A lot of people use Docker/rkt, but very often we do not have time to actually understand how they work. So today in half-hour I will show you in a nutshell how that works. My hope is that even after you know how to build a container engine, I can still convince you that the existing tools are worth spending $MM to create and use.
How to build a social network on serverlessYan Cui
This document discusses building a social network using serverless architecture. It describes how the company moved from monolithic architecture to microservices, events, and serverless functions. This reduced costs by 95% compared to EC2 and allowed 15x more production releases per month. It also discusses challenges of testing, monitoring, security and other aspects of building serverless systems at scale.
Business Agility: Taking an App Global (at Speed) - Session Sponsored by ITOCAmazon Web Services
AWS Summit 2014 Brisbane - Breakout 4 Sponsor Session
Agility is the #1 reason why businesses are moving so quickly to AWS and the cloud. Attend this session with ITOC to learn how treating ‘infrastructure as code’ drives business agility and speed to market at a global scale, all powered by AWS. Backed by real success stories, ITOC will share strategic thinking and implementations that are guaranteed to help you understand and leverage the potential of AWS.
Presenter: David Nedvěd - Co-founder & Director at ITOC Australia
Similar to Brendan O'Bra Scala By the Schuykill (20)
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS ‘17, Xi’an, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS ‘17.
- Invited for presentation at SoCal PLS ‘16.
- Invited for poster presentation at PLDI SRC ‘16.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
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.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
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.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
SOCRadar's Aviation Industry Q1 Incident Report is out now!
The aviation industry has always been a prime target for cybercriminals due to its critical infrastructure and high stakes. In the first quarter of 2024, the sector faced an alarming surge in cybersecurity threats, revealing its vulnerabilities and the relentless sophistication of cyber attackers.
SOCRadar’s Aviation Industry, Quarterly Incident Report, provides an in-depth analysis of these threats, detected and examined through our extensive monitoring of hacker forums, Telegram channels, and dark web platforms.
Measures in SQL (SIGMOD 2024, Santiago, Chile)Julian Hyde
SQL has attained widespread adoption, but Business Intelligence tools still use their own higher level languages based upon a multidimensional paradigm. Composable calculations are what is missing from SQL, and we propose a new kind of column, called a measure, that attaches a calculation to a table. Like regular tables, tables with measures are composable and closed when used in queries.
SQL-with-measures has the power, conciseness and reusability of multidimensional languages but retains SQL semantics. Measure invocations can be expanded in place to simple, clear SQL.
To define the evaluation semantics for measures, we introduce context-sensitive expressions (a way to evaluate multidimensional expressions that is consistent with existing SQL semantics), a concept called evaluation context, and several operations for setting and modifying the evaluation context.
A talk at SIGMOD, June 9–15, 2024, Santiago, Chile
Authors: Julian Hyde (Google) and John Fremlin (Google)
https://doi.org/10.1145/3626246.3653374
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
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.
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
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
E-commerce Application Development Company.pdfHornet Dynamics
Your business can reach new heights with our assistance as we design solutions that are specifically appropriate for your goals and vision. Our eCommerce application solutions can digitally coordinate all retail operations processes to meet the demands of the marketplace while maintaining business continuity.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j
Dr. Jesús Barrasa, Head of Solutions Architecture for EMEA, Neo4j
Découvrez les dernières innovations de Neo4j, et notamment les dernières intégrations cloud et les améliorations produits qui font de Neo4j un choix essentiel pour les développeurs qui créent des applications avec des données interconnectées et de l’IA générative.
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Brendan O'Bra Scala By the Schuykill
1. Akka Services
The Journey from one Big Problem to Many Small Problems
Brendan O'Bra - Scala By The Schuylkill 2017
1
Brendan O’Bra, Software Developer, Comcast
2. One slide about me
20+ years as a coder
“Burned out” Java/maven dude before Scala
(probably like everyone else in the room)
Born , raised and lived in Northern California my entire life (somewhat of a
unicorn in that respect)
I actually made a living writing Delphi in the 90’s
Used to have REALLY long hair
Welcome to my stream of conciousness…
Brendan O'Bra - Scala By The Schuylkill 20172
3. You know that guy who has the dream project ?
Everything works
The 1st time
At massive scale
All the awesome buzzwords are there?
Brendan O'Bra - Scala By The Schuylkill 20173
5. If there’s a mistake, it’s quite possible I’ve made it…
Things like…
“I’ll get to that on the next sprint”
6 months later, the interest has more than accrued on that Tech. Debt
“I’ll write the tests later”
Later never comes. It attacks in production. We have no way to isolate it.
Guess it’s time to write the tests
“I can’t find a thing to do X, I’d better write one of those”
Look harder next time, there’s a thing that does that very well
Brendan O'Bra - Scala By The Schuylkill 20175
6. Gumby. WTF is that?
Gumby is:
• Comcast’ Cloud Deployment tool
• Something that provides a REST API
• Provides “cloud abstraction” – one payload can create machines in many
different backends
• The thing that led us to Akka ;)
Brendan O'Bra - Scala By The Schuylkill 20176
7. What ? Another one of these things?
4 years ago , tools were much less mature
Comcast needed a tool that would work with all (OpenStack/EC2/Vsphere)
cloud types
We had libraries/integrations laying around (written in java) that already
worked with openstack/vpshere. These libraries provided “scope
narrowing” to provide ease of use to our customers, the app developers
Brendan O'Bra - Scala By The Schuylkill 20177
8. The History Of Gumby
Brendan O'Bra - Scala By The Schuylkill 20178
Play! App built in Maven
2014 2015 2016 2017
Spray/Akka
built w/SBT
:The Monolith
is born
Oh crap, we need
microservices
Oh crap, how do we
Move to microservices
uLIth!
Microservices
Many, Many releases
ELK Cassandra
AppDynamics
PagerDuty
Docker
Our Story
Begins Here
9. Act I
A Science Experiment goes Production
Brendan O'Bra - Scala By The Schuylkill 20179
10. Act I
A Science Experiment goes Production
Brendan O'Bra - Scala By The Schuylkill 201710
11. In the beginning, there was the Gumby Monolith
One big pile of (mainly) scala code, with one and only one release artifact
(all modules run in one JVM)
Brendan O'Bra - Scala By The Schuylkill 201711
13. And all was good…
We made it
We deployed it (one gigantic instance per
tenant)
It did (most) of what it was supposed to do
Brendan O'Bra - Scala By The Schuylkill 201713
15. But..
There were only 2 developers – we were slow
Customers wanted it to do new stuff + adoption rate was increasing
The product was a bit slow too...
Coupling was high
Blast Radius was large
Brendan O'Bra - Scala By The Schuylkill 201715
16. And…
Each new tenant required a separate instance
Config for each instance was maintained by Gumby developers
Each new instance needed to have it’s config maintained
Upgrades were a real pain
It seemed like all we were doing was support
Brendan O'Bra - Scala By The Schuylkill 201716
17. We needed to scale our team
So we useradd new_awesome_dev (s)
Everyone started to git push origin feature/awesome_feature
Tests! Features! Yes!
And then…
The collisions and “blast radius” events started. Coupling was killng us. We
started to lose our way....
Brendan O'Bra - Scala By The Schuylkill 201717
18. We were now here
Brendan O'Bra - Scala By The Schuylkill 201718
19. But we knew we needed to be here:
Brendan O'Bra - Scala By The Schuylkill 201719
20. The solution to this quandry was…
Microservices
Brendan O'Bra - Scala By The Schuylkill 201720
22. Microservices – It’s all about developers!
• Small, loosely coupled applications
• Well defined and relatively small in scope
• Emphasis on interfaces/APIs as collaboration ”points”. Could be REST, but
does not need to be – depends on use case – make it messaging based
• “Micro” is a relative term
Brendan O'Bra - Scala By The Schuylkill 201722
23. MicroServices == Small Changes
Allow developers to operate in the small:
•Small changes
•Small tests
•Small interdependency
•Small collateral damage to other code
•Only interactions with collaborators are via API (ideally)
Brendan O'Bra - Scala By The Schuylkill 201723
26. What the Devs in DevOps really want is…
Brendan O'Bra - Scala By The Schuylkill 201726
27. DevOps and Microservices : BFFs
Because there are smaller “pieces”…
• There are more things to release
–And more things to deploy
–And more things to configure
Brendan O'Bra - Scala By The Schuylkill 201727
AKA:
28. For which there is only one cure
Brendan O'Bra - Scala By The Schuylkill 201728
29.
30. We realized we need to get from...
Brendan O'Bra - Scala By The Schuylkill 201730
31. Here: Gumby Single Tenant Architecture
Brendan O'Bra - Scala By The Schuylkill 201731
32. TO here: Gumby Multitenant ”Logical” Architecture
Brendan O'Bra - Scala By The Schuylkill 201732
33. Look at those arrows…
Brendan O'Bra - Scala By The Schuylkill 201733
35. So, how do we go Monolith -> Microservices, without
Greenfielding?
Brendan O'Bra - Scala By The Schuylkill 201735
36. Brendan O'Bra - Scala By The Schuylkill 201736
Cloud
Cloud-Init
Auth
Datastore
Openstack
EC2VMWare
Azure
UI
DNS Bakery
Spray
Job Control (sharded)
37. The History Of Gumby
Brendan O'Bra - Scala By The Schuylkill 201737
Play! App built in Maven
2014 2015 2016 2017
Spray/Akka
built w/SBT
:The Monolith
is born
Oh crap, we need
microservices
Oh crap, how do we
Move to microservices
uLIth!
Microservices
Many, Many releases
ELK Cassandra
AppDynamics
PagerDuty
Docker
38. And now….
A Message from the Ops side of the
brain
Brendan O'Bra - Scala By The Schuylkill 201738
39. Ops view of managing a monolith
Brendan O'Bra - Scala By The Schuylkill 201739
40. Ops View of managing microservices
Brendan O'Bra - Scala By The Schuylkill 201740
41. Make a microlith (uLith)
Brendan O'Bra - Scala By The Schuylkill 201741
42. The Lith: A means to an end
The uLith is all Gumby Microservices composed into one (not so)
Microservice – the microservices still use “proper” interfaces to
collaborate, but just happen to run in one JVM
This allows us to iteratively move from the monolithic codebase to
microservices, without having to “green field” a top-bottom refactor of
entire product, while simultaneously adding critical new functionality
such as multitenancy and self service
Several uLiths run in a cluster, providing HA/H-Scalability (work can be
distributed across cluster)
Brendan O'Bra - Scala By The Schuylkill 201742
43. Shatter the Monolith!
Brendan O'Bra - Scala By The Schuylkill 201743
Cloud
Cloud-Init
Auth
Datastore
Openstack
EC2
VMWareAzure
UIDNS
Bakery Job Control
44. Define Microservices based on Identified services
Modularize code into modules that encapsulate each microservice:
-External messages (messages that are used to to collaborate with *this*
service) are identified
-Internal messages are left in each module
Brendan O'Bra - Scala By The Schuylkill 201744
45. Lexicon – the common module
Identify and isolate common objects into common message module
This is a compromise for sure, as it creates a bottleneck around the
common module
In addition to having a authoritative “dictionary” of messages, circular
dependencies are reduced/eliminated
Also could possibly provide a convenient dependency for external
integration
Brendan O'Bra - Scala By The Schuylkill 201745
46. Externalize EXTERNAL dependencies into common
dependencies “module”
Unifying versions of things such as Spray, Akka, etc. becomes VERY
important
This is a great place for an SBT Plugin ;)
Brendan O'Bra - Scala By The Schuylkill 201746
47. Spray nice to together
- Use interfaces + system.actorOf(…) to make the services
collaborate
- val jobHandlerActor =
system.actorOf(JobRequestHandlerFactory.props(imageJ
obService,
machineJobPersistentService,
machineJobProxy,
imageJobProxy,
userAuthActor ))
Brendan O'Bra - Scala By The Schuylkill 201747
48. Compose them into one thing (using git submodule and a
build.sbt)
lazy val projectRoot = Project(id = "gumby-ulith", base = file("."))
.settings(ulithCommonSettings: _*)
.aggregate(
projectAcmLib,
lazy val projectAcmLib = Project(id = "gumby-acm-lib", base = file("gumby-acm/gumby-acm-lib"))
.settings(ulithCommonSettings: _*)
.settings(libraryDependencies += phantomDsl,
libraryDependencies += phantomConnectors,
libraryDependencies += phantomTestKit)
.dependsOn(projectAcmCommon,
…
Brendan O'Bra - Scala By The Schuylkill 201748
50. Brendan O'Bra - Scala By The Schuylkill 201750
Auth Cloud Datastore Cloud-init UI
VMWareOpenstackEC2Bakery DNS Azure
Common
Messages
Common Dependencies
52. It is (more than) a little silly… But...
It creates a pattern in which:
Modularity is increased
Coupling is DECREASED
Cohesion is increased
Developers can think in a more “service oriented” fashion without having to
take on full Ops burden all at once
Individual microservices can be individually peeled of and deployed
independently (outside of uLith)
All modules can be released independently
Change is incremental
Brendan O'Bra - Scala By The Schuylkill 201752
53. There are a few side effects…
Brendan O'Bra - Scala By The Schuylkill 201753
55. Brendan O'Bra - Scala By The Schuylkill 201755
Swarm
Seed Seed Seed
ULith ULith ULith ULith ULith
ULithULithULithULith ULith
56. The History Of Gumby
Brendan O'Bra - Scala By The Schuylkill 201756
Play! App built in Maven
2014 2015 2016 2017
Spray/Akka
built w/SBT
:The Monolith
is born
Oh crap, we need
microservices
Oh crap, how do we
Move to microservices
uLIth!
Microservices
Many, Many releases
ELK Cassandra
AppDynamics
PagerDuty
Docker
We resume
here
57. Next Stop, (real) Microservices
Brendan O'Bra - Scala By The Schuylkill 201757 Brendan O'Bra - Scala By The Schuylkill 201757
Cloud
Cloud-Init
Auth
Datastore
Openstack
EC2
VMWareAzure
UIDNS
Bakery
Microlith
58. Brendan O'Bra - Scala By The Schuylkill 201758
Brendan O'Bra - Scala By The Schuylkill 201758
Swarm
Seed Seed Seed
Auth Cloud Model Cloud-init UI
VMWareOpenstackEC2Bakery DNS Azure
59. A few development challenges
Singleton can become Singleton(s) in Akka
Cluster Sharding can be hard to understand for newbs (and not so newbs)
There’s a database (Cassandra) behind it – we’re just a bunch of dopey
devs, we don’t know how to admin that stuff
Akka has it’s own gotchas (closing over sender, type “sensitivity” with
messaging,Cluster Startup Order,split brain)
Much consternation about serialization choices
Brendan O'Bra - Scala By The Schuylkill 201759
60. In the end…
Cluster early, cluster often
Docker ASAP
Don’t be afraid of writing SBT plugins
Implicit conversions are like atomic weapons – they have a time and a place
Don’t fight ivy, because it will win
Be strong in your resistance to using exclude(…) in sbt
Don’t be a Scala bigot - use Scala to set an example
Scala *really* does help with hiring – not JUST attracting people, but attracting
the *right* people
Practice EVERYTHING. ALL THE TIME. Cassandra. Networky things. Docker at
all points in pipeline
Consider sbt test git hooks on dev machines
Brendan O'Bra - Scala By The Schuylkill 201760
61. Tools/Library Shoutouts
Phantom – kickass Cassandra DSL/library
https://github.com/outworkers/phantom
Ammonite – Just like a scala worksheet, but way better
https://github.com/lihaoyi/Ammonite
Sbt-release – accept it’s patterns, and your releases will be something you
won’t really have to care about anymore
https://github.com/sbt/sbt-release
Sbt-extras – command line abstraction for the myriad of sbt options
https://github.com/paulp/sbt-extras
Brendan O'Bra - Scala By The Schuylkill 201761
Our journey to Microservices from a “classic” monolith
About the strange interfaces between design patterns and operations
I took the original “Functional Progamming in Scala” in 2013
Despite that, everyone around me knows more than I do ;)
And so many more… sometimes with several repeats
Started in 2013
First production work for Sochi Olymics with Sports app
First X1 work in 2014
Large scale use in 2015
Now deploys entire X1 backend infrastructure plus many other projects
Will be open source at some point
Currently supports “traditional VMs” (i.e. not docker)
Yes ,the deployment tool space is now somewhat crowded
Why not
- A lot of apps seems to start as Play! Apps even if Spray is a better choice
A science experiment goes prod
That’s 67k LOC, and some of them are even good
One, bigass sbt-assembly jar. Large, opaque.SNAPSHOTs up the wazzoo.
Deployed onto ”tradtional VMs”
-
-
-
- Compilation errors, general brittleness
- Whole days could be spent untying wet knots
Onboarding was a bitch, due to things like cloud configs, network access and image configuration
And also…. Multitenancy
Low coupling == agility
Well defined BECAUSE they are small in scope
Old school “contracts” make understanding who says what easier to determine
DNS service? Hello World? Depends on your project
Akka is , of course, perfect for microservices
On the Gumby team:
All do development (write tests + write code)
All do production support
All get to smell the roses
All get to smell the shit
All have at least 2(Ops,Dev) inner voices present
This allows (forces) us to confront operational AND development issues at the same time. This includes deployment, scaling and other “Enterprisey” things
They are BFFs because Devops (coupled with automation), makes being incremental more approachable – automate once, run many. This means that, not only is it repeatable, it’s also much more exercisable
Robots!
One tenant per vm
In/our security model
NO self service
One “grid” with common database
Multitenant
Self service
Granular security control
We had a dependency graph that looks like this….
There are 13 of these damn things now ;)
The interconnections are the story
Job Control is Cluster Sharding, backed by akka-persistence-cassandra
Each one of those is probably a build configuration
- Point out management overhear of circled items.
This archictecture is fairly complex.
Each microservice is a JVM, and ultimately a docker container
They are all very connected
They need to be able to locate and talk to each other
Form a management perspective, the monolith is much more attractive – it’s one type of thing to manage, even if there are multiple of them
Dependencies and interconnections expand geometrically
Aggregate answers to questions such as “How is my service performing” become much more complex to answer
The use of tools such as Logging-As-A-Service become impossible to do without
The sheer volume of data and number of nodes demands automation
Automation AND Configuration AND CI expand to be one instance PER Microservice
We realized that one runtime “thing” had become 11 (not including external dependencies). And we were also putting all customers onto “this thing”
So, what do we do?
Spinal Tap Anyone?
Microlith or “ulith”
OK.. So we have everything modularized. Let’s make it do something
Take these services
Modularize based on previous
We tried to use a module-per-project for interfaces, but the dependency graph soon became circular
Bottleneck is that MANY things will now depend on common-messages module
Makes it MUCH easier to write tests around common messaging ;)
3 – Because you are almost forced to anyways
Being able to depend on hard versions becomes important to common module. This is another great place for an sbt plugin
In the end, it will all be packaged as one big thing, and needs to pass the “sbt-release” uberjar sniff test
This will be painful and annoyingly “iterative”, but will produce a clean dependency graph
Yes, this could be construed as heavy handed and “enterprisey”
-We favored ‘explicit dependency inject’
The factory (implementations are “known” to the “main method” that will use them (i.e. it’s dependent)
Scala Props() work nicely for this.
And you end up with a dependency graph that looks like this
Submodules can be a pain, and devs have to remember to update them
Delayed integration can be a pain
Intellij frequently pukes on this module layout and goes all ”red crazy”
Backed by cassandra, which is managed as ”pets”
Things like off node logging and monitoring become indispensible
- A lot of apps seems to start as Play! Apps even if Spray is a better choice
With each microservice already mostly defined, each one can be peeled off , adding a “main” to each. The “peeled off” standalone microservices can then be incrementally deleted from the uLith, with the final architecture looking like a a “genuine” microsevices architecture
We ”needed” a singleton for JWT token (decided we did not want to deal with database stuff)
We still love Akka tho
Cassandra is great, but needs people who know WTF they are doing.
Type sensitivity – unhandled message, and being susceptible to dupicate classnames in different packages
Serialization w/respect to cluster sharding. What happens with upgrades?
1 Akka in one jvm is not the same as akka in >1 JVM. REALLY learn to cluster
2 Embrace the idiosyncracies of the overlay nework. Leverage the dns
3 We were – eventually we developed SBT plugins to build images for different enviroments , and provide correct config
4 Implicit caused confusion (sort of as expected) for new folks – consider your audience
5 We really struggle with using maven/ivy (local) repos
6 it’s much better to understand and harominize your dependency graph. Exclude is the singleton of sbt ;)
7 We work with many Java folks, and a bunch of Go folks as well.
8 Vikas, Alex – it’s about quality, not quantity
9 Even doing nothing, everything has a shelf life
10 this stems from years of ‘mvn clean install’ providing default test. We’ve had SO many broken tests in CI because of this