This deck is about Microservices Architecture and why do we need it, architecture patterns which need to be followed during Microservices development, and about few tricky questions like API Versioning and
Decomposition Recipes
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
SCS 4120 - Software Engineering IV
BACHELOR OF SCIENCE HONOURS IN COMPUTER SCIENCE
BACHELOR OF SCIENCE HONOURS IN SOFTWARE ENGINEERING
All in One Place Lecture Notes
Distribution Among Friends Only
All copyrights belong to their respective owners
Viraj Brian Wijesuriya
vbw@ucsc.cmb.ac.lk
The concept of service mesh is one of the new technologies that have grown up around the container and micro-service model over the last couple of years, and Istio is the latest entry into this space. As Istio was recently included as an incubated project in the CNCF, many companies are now looking to it to provide a set of key functions to accelerate their micro-service application management model. Istio enables bi-directional authentication and security of service communication via TLS based authentication and encryption, and at the same time is able to capture application level communication statistics, improving the application development team's visibility into the otherwise difficult to track communication patterns. In this way, Istio acts like an application level network, riding across the underlying capabilities of Kubernetes CNI based networks and network policy. We will implement Istio on a GKE kubernetes cluster, and instrument a simple application to get better insight into how Istio provides its capabilities.
Speaker Bio:
With over 20 years of experience as a systems reliability engineer, and a focus on automating not only application deployments but the underlying infrastructure as well, Robert Starmer brings a wealth of knowledge to the full application enablement stack. He has applied this knowledge in fields from high-performance computing to high-frequency trading environments, and everything in between. Robert also holds patents in network, data center, and application performance and scale enhancements. He is a Founder and the CTO at Kumulus Technologies, a DevOps, Systems Reliability Engineering and cloud computing consultancy. Additionally, Robert is an incurable photography nerd and has been known to stay up until dawn in remote locations to capture celestial time-lapses.
A proper Microservice is designed for fast failure.
Like other architectural style, microservices bring costs and benefits. Some development teams have found microservices architectural style to be a superior approach to a monolithic architecture. Other teams have found them to be a productivity-sapping burden.
This material start with the basic what and why microservice, follow with the Felix example and the the successful strategies to develop microservice application.
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
SCS 4120 - Software Engineering IV
BACHELOR OF SCIENCE HONOURS IN COMPUTER SCIENCE
BACHELOR OF SCIENCE HONOURS IN SOFTWARE ENGINEERING
All in One Place Lecture Notes
Distribution Among Friends Only
All copyrights belong to their respective owners
Viraj Brian Wijesuriya
vbw@ucsc.cmb.ac.lk
The concept of service mesh is one of the new technologies that have grown up around the container and micro-service model over the last couple of years, and Istio is the latest entry into this space. As Istio was recently included as an incubated project in the CNCF, many companies are now looking to it to provide a set of key functions to accelerate their micro-service application management model. Istio enables bi-directional authentication and security of service communication via TLS based authentication and encryption, and at the same time is able to capture application level communication statistics, improving the application development team's visibility into the otherwise difficult to track communication patterns. In this way, Istio acts like an application level network, riding across the underlying capabilities of Kubernetes CNI based networks and network policy. We will implement Istio on a GKE kubernetes cluster, and instrument a simple application to get better insight into how Istio provides its capabilities.
Speaker Bio:
With over 20 years of experience as a systems reliability engineer, and a focus on automating not only application deployments but the underlying infrastructure as well, Robert Starmer brings a wealth of knowledge to the full application enablement stack. He has applied this knowledge in fields from high-performance computing to high-frequency trading environments, and everything in between. Robert also holds patents in network, data center, and application performance and scale enhancements. He is a Founder and the CTO at Kumulus Technologies, a DevOps, Systems Reliability Engineering and cloud computing consultancy. Additionally, Robert is an incurable photography nerd and has been known to stay up until dawn in remote locations to capture celestial time-lapses.
A proper Microservice is designed for fast failure.
Like other architectural style, microservices bring costs and benefits. Some development teams have found microservices architectural style to be a superior approach to a monolithic architecture. Other teams have found them to be a productivity-sapping burden.
This material start with the basic what and why microservice, follow with the Felix example and the the successful strategies to develop microservice application.
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailogjuljo
Full day workshop about Microservices Architectures, from the basis to advanced topics like Service Discovery, Load Balancing, Fault Tolerance and Centralized Logging.
Many technologies are involved, like Spring Cloud Netflix, Docker, Cloud Foundry and ELK.
A separate deck describes all the lab exercises.
A introduction to Microservices Architecture: definition, characterstics, framworks, success stories. It contains a demo about implementation of microservices with Spring Boot, Spring cloud an Eureka.
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
Microservices architectures are changing the way that organizations build their applications and infrastructure. Companies can now achieve new levels of scale and efficiency by disaggregating their large, monolithic applications into small, independent “micro services”, each of which perform different functions. In this session, we’ll introduce the concept of microservices, help you evaluate whether your organization is ready for microservices, and discuss methods for implementing these architectures. We’ll also cover topics such as using API gateways, enabling self-service infrastructure provisioning, and ways to manage your microservices.
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
Continuous Delivery and Micro Services - A SymbiosisEberhard Wolff
Continuous Delivery profits from Micro Services - and the other way round. This presentation shows how the two technologies work together - and how Micro Services can be used to simplify the transition to Continuous Delivery.
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailogjuljo
Full day workshop about Microservices Architectures, from the basis to advanced topics like Service Discovery, Load Balancing, Fault Tolerance and Centralized Logging.
Many technologies are involved, like Spring Cloud Netflix, Docker, Cloud Foundry and ELK.
A separate deck describes all the lab exercises.
A introduction to Microservices Architecture: definition, characterstics, framworks, success stories. It contains a demo about implementation of microservices with Spring Boot, Spring cloud an Eureka.
This is a small introduction to microservices. you can find the differences between microservices and monolithic applications. You will find the pros and cons of microservices. you will also find the challenges (Business/ technical) that you may face while implementing microservices.
Microservices architectures are changing the way that organizations build their applications and infrastructure. Companies can now achieve new levels of scale and efficiency by disaggregating their large, monolithic applications into small, independent “micro services”, each of which perform different functions. In this session, we’ll introduce the concept of microservices, help you evaluate whether your organization is ready for microservices, and discuss methods for implementing these architectures. We’ll also cover topics such as using API gateways, enabling self-service infrastructure provisioning, and ways to manage your microservices.
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
Continuous Delivery and Micro Services - A SymbiosisEberhard Wolff
Continuous Delivery profits from Micro Services - and the other way round. This presentation shows how the two technologies work together - and how Micro Services can be used to simplify the transition to Continuous Delivery.
Document gives overview of Microservices and how Websphere commerce can be leveraged as microservices. It gives pros and cons of various approaches and challanges.
DevOps, Microservices and containers - a high level overviewBarton George
This is deck is meant as a high-level overview of the concepts of DevOps, Microservices and containers and how they serve as key enablers for Digital Transformation.
ArchSummit Shenzhen - Using sagas to maintain data consistency in a microserv...Chris Richardson
This is a talk I gave at QCON ArchSummit in Shenzhen.
The microservice architecture structures an application as a set of loosely coupled, collaborating services. Maintaining data consistency is challenging since each service has its own database to ensure loose coupling. To make matters worse, for a variety of reasons distributed transactions using JTA are not an option for modern applications.
In this talk we describe an alternative transaction model known as a saga. You will learn about the benefits and drawbacks of using sagas. We describe how sagas are eventually consistent rather than ACID and what this means for developers. You will learn how to design and implement sagas in a Java application.
Nodeconf Barcelona 2015 presentation exploring several ways of building microservices in an asynchronous way. Presented the concept of a broker as an alternative to a multiple point-to-point architecture.
Apcera reviews the good, bad and the amazing, based on feedback collected from 250+ early adopters, of emerging microservices platforms and best practices.
You can learn more about The Trusted Cloud Platform at: https://www.apcera.com/
Developing event-driven microservices with event sourcing and CQRS (svcc, sv...Chris Richardson
Modern, cloud-native applications typically use a microservices architecture in conjunction with NoSQL and/or sharded relational databases. However, in order to successfully use this approach you need to solve some distributed data management problems including how to maintain consistency between multiple databases without using 2PC.
In this talk you will learn more about these issues and how to solve them by using an event-driven architecture. We will describe how event sourcing and Command Query Responsibility Segregation (CQRS) are a great way to realize an event-driven architecture. You will learn about a simple yet powerful approach for building, modern, scalable applications.
This slides deck about Microservices architecture and why do we need it. Architecture patterns which we need to follow doing Microservices architecture: Microservice, API Gateway, Service Discovery, Stateless/Shared-Nothing, Configuration/Service Consumption, Fault Tolerance (Circuit Breaker), Request Collapsing. And a bit about API Versioning
A presentation to explain the microservices architecture, the pro and the cons, with a view on how to migrate from a monolith to a SOA architecture. Also, we'll show the benefits of the microservices architecture also for the frontend side with the microfrontend architecture.
Rob Davies presentation during Red Hat's "Microservices Journey with Apache Camel" that took place in Atlanta on 10/04/16 and in Minneapolis on 10/06/16.
Application Centric Microservices from Redhat Summit 2015Ken Owens
When Cisco started envisioning the future of its application development platforms, the ability to create applications that are cloud-native with elastic services, network-aware application policies, and micro-services was strategic to the company. When the decision to build and operate a Cisco cloud service delivery platform for collaboration, video, and Internet of Things (IoT) application development was made, OpenStack and micro-services became central to our application architectures and strategic to our vision as a company. This presentation will look at the journey Cisco developers took to transform to an application-centric OpenStack platform for application development in a secure, network-centric, and completely open source manner. The importance of the platform being Red Hat Enterprise Linux OpenStack Platform and using OpenShift by Red Hat and the contribution to the community will be described. The micro-services architecture and service-oriented DevOps lessons learned for enabling massive scalable and continuous delivery of software will be presented and demoed.
Adrian Cockcroft on his top predictions for the cloud computing industry in 2015 and beyond, as well as how cloud-native applications, continuous-delivery and DevOps techniques, will speed the pace of innovation and disruption.
For more about Adrian be sure to check out his page on Battery Ventures:
https://www.battery.com/our-team/member/adrian-cockcroft/
Follow Adrian on Twitter: @adrianco
Monoliths, Myths, and Microservices - CfgMgmtCampMichael Ducy
Moving from a monolithic based architecture to a more microservices architecture can be fraught with challenges. We'll talk about some of these challenges and some common myths associated with trying to strangle the Monolith. We'll also talk about config management and automation's critical role in helping you move to a microservices architecture, and how our monolithic approach to automation changes in the new world.
Building Cloud-Native App Series - Part 5 of 11
Microservices Architecture Series
Microservices Architecture,
Monolith Migration Patterns
- Strangler Fig
- Change Data Capture
- Split Table
Infrastructure Design Patterns
- API Gateway
- Service Discovery
- Load Balancer
This presentation provides an overview of microservices architectures in the enterprise. It includes a series of best practices and techniques for implementing microservices solutions in the real world.
Azure Day Rome Reloaded 2019 - Building serverless microservices in azureazuredayit
Serverless e microservizi sono due temi molto discussi nel mondo delle architetture moderne: unire questi due mondi consente di avere il massimo della flessibilità dal punto di vista architetturale e infrastrutturale. In questa sessione vedremo quali sono le best practice e gli aspetti chiave per realizzare una applicazione orientata a microservizi con la piattaforma FaaS di Microsoft Azure.
Are you considering Microservice architecture for your next project?
Are you planning to migrate an existing legacy / monolithic application to Microservices?
Are you curious about Microservice architecture?
If the answer to one of the above questions is YES, then this session is for you.
Join me to know all about Microservice architecture:
- When to adopt it?
- When not to adopt it?
- How to assess your team’s readiness to adopt Microservice architecture?
- Starting a new project with Microservice architecture.
- Migrate an existing project to Microservice architecture.
- Microservice architecture main anti-patterns and how to fix them.
- Are monoliths really that bad?
DEVNET-1170 Intercloud Microservices with Docker and NirmataCisco DevNet
Cloud-native applications are fundamentally different that traditional applications, and are being developed using the Microservices architecture pattern. This session will explain what the Microservcies. Architecture pattern is and what problems it solves. The session will also deep dive into how Microservcies can be packaged into container technologies, like Docker, and then orchestrated across clouds using application orchestration solutions. The session will have live demos of Microservices applications being deployed and operated on the Cisco Intercloud using Docker and Nirmata.
The Microservices approach is a new way of building composable, cloud-native applications. This session is designed for developers who are transforming existing applications to Microservices, or creating new Microservices style applications. The session will cover best practices, patterns including Service Registration and Discovery, and key development tools required for building distributed Microservices style applications. The session will also cover best practices for automating the operations of these applications, using container orchestration services.
Apache Camel journey with Microservices, lessons learned and utilisation of Fabric8 to make Docker, Kubernetes and OpenShift easy for developers to use
Airbnb, From Monolith to Microservices: How to Scale Your Architecture, Futur...New Relic
Hear from Melanie Cebula, Software Engineer at Airbnb, on how they utilize microservices to scale their architecture at FutureStack17 NYC.
See the video here: https://youtu.be/N1BWMW9NEQc
Be sure to subscribe and follow New Relic at:
https://twitter.com/NewRelic
https://www.facebook.com/NewRelic
https://www.youtube.com/NewRelicInc
Migrating to Microservices Patterns and Technologies (edition 2023)Ahmed Misbah
This session is targeted towards teams and organizations considering to migrate their applications from Monolithic to Microservice architecture. Migrating application architectures to Microservices is considered a key area of transformation in the IT world. Modernizing legacy applications to Kubernetes-based Microservices can prove to be very challenging if not planned correctly, taking into consideration the right technologies and enablers.
The session proposes Istio as an enabler for migrating to Microservices. Istio is an implementation of service mesh, a technology useful for migrating to Microservices iteratively and safely. We explain how Istio can be used as a bridge and enabler for modernizing legacy Monolithic applications to Microservices.
In times of high pace development and continuous delivery, the traditional way of building enterprise applications, using a monolithic approach, has become problematic. As applications get larger and more complex, the development cycles become longer and result in less-reliable applications.
Microservices architecture has been making waves among development organizations since the term was first coined in 2011.
Today, microservices is on the verge of going mainstream with 36% of enterprises surveyed are currently using microservices, with another 26% in the research phase.
But what exactly is microservices architecture, and is it right for your organization’s culture, skills, and needs?
Vered is an experienced software engineer and team lead, specializing in web-related technology stack.
Successfully accompanied products through the full R&D life-cycle, from early concept to production and maintenance.
A Guide on What Are Microservices: Pros, Cons, Use Cases, and MoreSimform
IT organizations can be benefitted from a microservices approach to application development with more agile and accelerated time to market. However, there is a catch in order to break an app into fine-grained services.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
6. 6CONFIDENTIAL
6
Delivering world-class applications requires an agile, multidimensional
approach to architecture. It’s increasingly obvious that the old, linear,
three-tier architecture model is obsolete.
BECAUSE OF
“
„
Gartner Application Architecture, Development & Integration Summit 2014
7. 7CONFIDENTIAL
7
Traditional application architectures obsolete, and digital business
demands more agility than ever.
BECAUSE OF
“ „
Anne Thomas, VP Distinguished Analyst
13 years at Gartner
36 years industry experience
8. 8CONFIDENTIAL
8
Users expect millisecond response times and close to 100% uptime.
And by «user» I mean both humans and machines. Traditional
architectures, tools and products such simply won’t cut it anymore.
We can’t make the horse faster anymore, we need cars for where we
are going.
BECAUSE OF
“
„
Jonas Bonér
Founder & CTO of Lightbend (former Typesafe)
9. 9CONFIDENTIAL
9
MICROSERVICES VS MONOLITH
Simple code base
Modularity with exact borders
Change circles decoupled
Efficient scaling
Newcomers adopting faster
Per service(s) team responsibility
No technology lock
MONOLITH MICROSERVICES
Complex code base
Hard to maintain modularity
Change circles tightly coupled
Inefficient scaling
Scaring for newcomers
Hard to scale development team
Tied to chose technology
11. 11CONFIDENTIAL
11
MICROSERVICES VALUES VS COMPLEXITY
Team autonomy
Time to market
Scaling
Componentization
Technology variation
Cross teams communication
Continues Deployment
Fault tolerance
Versioning
Maintenance
VALUES COMPLEXITY
15. 15CONFIDENTIAL
15
NOT ABOUT SIZE, BUT RESPONSIBILITY
Mario Fusco
RedHatter, Drools developer, Java Champion, Milano Jug coordinator, speaker, co-author of Java 8 in Action. A functional mind hosted in an object oriented brain
16. 16CONFIDENTIAL
16
BOUNDED CONTEXT
Bounded Context is a
central pattern in
Domain-Driven
Design. It is the
focus of DDD's
strategic design
section which is all
about dealing with
large models and
teams.
18. 18CONFIDENTIAL
18
DECENTRALIZED DATA MANAGEMENT
Microservices prefer letting each service
manage its own database, either different
instances of the same database technology,
or entirely different database systems - an
approach called Polyglot Persistence.
You can use polyglot persistence in a
monolith, but it appears more frequently
with microservices.
21. 21CONFIDENTIAL
21
WHAT ABOUT DISTRIBUTED TRANSACTIONS?
In general, application developers simply do not implement
large scalable applications assuming distributed transactions.
Transactions are fine within the individual microservice
“ „
Pat Helland, Software Architect
SQL Architecture Team @ Microsoft
Bing @ Microsoft
Cloud based multi-tenanted file system and database technology @ salesforce.com
22. 22CONFIDENTIAL
22
I NEED A “DISTRIBUTED TRANSACTIONS” STILL
Implement the Saga pattern and break the service interaction (the
business process) into multiple smaller business actions and
counteractions. Coordinate the conversation and manage it based on
messages and timeouts.
How can you reach distributed consensus between services without
transactions?
“
„
Arnon Rotem-Gal-Oz
Author of the SOA Patterns book
SAGA PATTERN
23. 23CONFIDENTIAL
23
DESIGN FOR FAILURE
Distributed systems are
much complex than
monolith.
When we have more
systems there is more
chances to fail.
If more places when you
can fails then more often
you can deal with failures.
25. 25CONFIDENTIAL
25
KEY CONSIDERATION
Before you go into production with a microservices system, you need to ensure
that you have key prerequisites in place
• DevOps Culture
• Rapid Provisioning
• Basic Monitoring / Debugging capabilities
• Rapid Application Deployment
41. 43CONFIDENTIAL
43
SIMPLE CONFIGURATION
http://12factor.net
http://12factor.net/config
The twelve-factor app stores config in environment variables (often shortened to env vars or env). Env
vars are easy to change between deploys without changing any code; unlike config files, there is little
chance of them being checked into the code repo accidentally; and unlike custom config files, or other
config mechanisms such as Java System Properties, they are a language- and OS-agnostic standard.
ENVIRONMENT VARIABLES
42. 44CONFIDENTIAL
44
ADVANCED CONFIGURATION
• Changing logging levels of a running application in order to debug a production issue
• Change the number of threads receiving messages from a message broker
• Report all configuration changes made to a production system to support regulatory audits
• Toggle features on/off in a running application
• Protect secrets (such as passwords) embedded in configuration
COMPLEX CASES
50. 52CONFIDENTIAL
52
POTENTIAL DOWNTIME
Availability % Downtime per year Downtime per month Downtime per week Downtime per day
90% ("one nine") 36.5 days 72 hours 16.8 hours 2.4 hours
95% 18.25 days 36 hours 8.4 hours 1.2 hours
97% 10.96 days 21.6 hours 5.04 hours 43.2 minutes
98% 7.30 days 14.4 hours 3.36 hours 28.8 minutes
99% ("two nines") 3.65 days 7.20 hours 1.68 hours 14.4 minutes
99.5% 1.83 days 3.60 hours 50.4 minutes 7.2 minutes
99.8% 17.52 hours 86.23 minutes 20.16 minutes 2.88 minutes
99.9% ("three nines") 8.76 hours 43.8 minutes 10.1 minutes 1.44 minutes
99.95% 4.38 hours 21.56 minutes 5.04 minutes 43.2 seconds
99.99% ("four nines") 52.56 minutes 4.38 minutes 1.01 minutes 8.66 seconds
99.995% 26.28 minutes 2.16 minutes 30.24 seconds 4.32 seconds
99.999% ("five nines") 5.26 minutes 25.9 seconds 6.05 seconds 864.3 milliseconds
99.9999% ("six nines") 31.5 seconds 2.59 seconds 604.8 milliseconds 86.4 milliseconds
99.99999% ("seven nines") 3.15 seconds 262.97 milliseconds 60.48 milliseconds 8.64 milliseconds
99.999999% ("eight nines") 315.569 milliseconds 26.297 milliseconds 6.048 milliseconds 0.864 milliseconds
99.9999999% ("nine nines") 31.5569 milliseconds 2.6297 milliseconds 0.6048 milliseconds 0.0864 milliseconds
Without taking steps to
ensure fault tolerance,
30 dependencies each
with 99.99% uptime
would result in 2+ hours
downtime/month
(99.99%30 ≈ 99.7%
uptime = 2+ hours in a
month)
http://techblog.netflix.com/2012/02/fault
-tolerance-in-high-volume.html
0.3% means that the one
million request will have
3000 failed
51. 53CONFIDENTIAL
53
CIRCUIT BREAKER
The basic idea behind the circuit breaker
is very simple. You wrap a protected
function call in a circuit breaker object,
which monitors for failures. Once the
failures reach a certain threshold, the
circuit breaker trips, and all further calls
to the circuit breaker return with an
error, without the protected call being
made at all. Usually you'll also want some
kind of monitor alert if the circuit
breaker trips.
56. 59CONFIDENTIAL
59
REQUEST COLLAPSING
In addition to the isolation
benefits and concurrent
execution of dependency
calls we have also need to
leverage the separate threads
to enable request collapsing
(automatic batching) to
increase overall efficiency
and reduce user request
latencies.
Collapse multiple requests into a single execution
based on a time window and optionally a max batch
size.
This allows an object model to have multiple calls to
the command that execute/queue many times in a
short period (milliseconds) and have them all get
batched into a single backend call.
Typically the time window is something like 10ms
give or take.
57. 60CONFIDENTIAL
60
REQUEST COLLAPSING: UNDER THE HOOD
In addition to the isolation
benefits and concurrent
execution of dependency
calls we have also leveraged
the separate threads to
enable request collapsing
(automatic batching) to
increase overall efficiency
and reduce user request
latencies.
Collapse multiple requests into a single execution
based on a time window and optionally a max batch
size.
This allows an object model to have multiple calls to
the command that execute/queue many times in a
short period (milliseconds) and have them all get
batched into a single backend call.
Typically the time window is something like 10ms
give or take.
59. 62CONFIDENTIAL
62
API VERSIONING
• Adding authentication
• Adding authorization rules
• Removing a service
• API contract changes
REASONS SOLUTIONS
• URL Versioning
• Media Type Versioning
• Custom header
• Hostname
• Data parameter
60. 63CONFIDENTIAL
63
API VERSIONING
One method for indicating versioning is via the URI, typically via a path prefix:
Twitter: http://api.twitter.com/1.1/
Last.fm: http://ws.audioscrobbler.com/2.0/
Etsy: http://openapi.etsy.com/v2
Some APIs will provide the version via a query string parameter:
Amazon Simple Queue Service: ?VERSION=2011-10-01
URL
61. 64CONFIDENTIAL
64
API VERSIONING
Media type versioning provides the ability to use the same URI for multiple versions of an API, by specifying the version as part
of the Accept media type.
The Accept header can provide versioning in two different ways:
• As part of the media type name itself: application/vnd.status.v2+json. In this case, the segment v2 indicates the
request is for version 2. You can provide the version string however you desire.
• As a parameter to the media type: application/vnd.status+json; version=2. This option provides more
verbosity, but allows you to specify the same base media type for each version.
Many REST advocates prefer media type versioning as it solves the "one resource, one URI" problem cleanly, and allows
adding versioning support after-the-fact. The primary argument against it is the fact that the version is not visible when
looking at the URI.
MEDIA TYPE
62. 65CONFIDENTIAL
65
API VERSIONING
The above two versioning types are the most common; however, other types exist:
• Custom header. As an example,
• X-API-Version: 2
• GData-Version: 2.0
• X-MS-Version: 2011-08-18
• etc.
• Hostname. Facebook, when migrating from the first API version, switched from the host http://api.facebook.com to
http://graph.facebook.com.
• Data parameter. This could be a query string parameter for GET requests, as noted above, but a content body parameter for
other request methods.
OTHER METHODOLOGIES
63. 67CONFIDENTIAL
67
API VERSIONING
It seems that there are a number of people recommending using Content-Negotiation (the HTTP
“Accept:” header) for API versioning.
However, none of the big public REST APIs I have looked at seem to be using this approach. They almost
exclusively put the API version number in the URI.
64. 68CONFIDENTIAL
68
API VERSIONING
Twitter URI
Atlassian URI
Google Search URI
Github API URI/Media Type in v3
Intention is to remove versioning in favour of
hypermedia – current
application/vnd.github.v3
Azure Custom Header x-ms-version: 2011-08-18
Facebook URI/optional versioning graph.facebook.com/v1.0/me
Bing Maps URI
Netflix URI parameter
http://api.netflix.com/catalog/titles/series/
70023522?v=1.5
65. 69CONFIDENTIAL
69
API VERSIONING
Google data API (youtube/spreadsheets/others)
URI parameter or custom
header “GData-Version: X.0” or “v=X.0”
Flickr No versioning?
Digg URI http://services.digg.com/2.0/comment.bury
Delicious URI https://api.del.icio.us/v1/posts/update
Last FM URI http://ws.audioscrobbler.com/2.0/
LinkedIn URI
http://api.linkedin.com/v1/people/~/connec
tions
Foursquare URI
https://api.foursquare.com/v2/venues/40a55
d80f964a52020f31ee3?oauth_token=XXX&v=YY
YYMMDD
66. 70CONFIDENTIAL
70
API VERSIONING
paypal parameter &VERSION=XX.0
Twitpic URI http://api.twitpic.com/2/upload.format
Etsy URI http://openapi.etsy.com/v2
Tropo URI https://api.tropo.com/1.0/sessions
Tumblr URI api.tumblr.com/v2/user/
openstreetmap URI and response body http://server/api/0.6/changeset/create
Ebay URI (I think)
http://open.api.ebay.com/shopping?version=
713
67. 71CONFIDENTIAL
71
API VERSIONING
Wikipedia no versioning I think?
Bitly URI https://api-ssl.bitly.com/v3/shorten
Disqus URI
https://disqus.com/api/3.0/posts/remove.js
on
Yammer URI /api/v1
Drop Box URI
https://api.dropbox.com/1/oauth/request_to
ken
Amazon Simple Queue Service (Soap) URI Parameter and WSDL URI &Version=2011-10-01
69. 73CONFIDENTIAL
73
SELF-DESCRIBE PROTOCOLS
Roy T. Fielding
Senior Principal Scientist at Adobe, co-founded Apache, authored the REST architectural style and Web standards for URI, HTTP/1.x, and URI Templates
75. 79CONFIDENTIAL
79
#2: START NEW FEATURES AS MICROSERVICES
...the team decided that the best approach to deal with the
architecture changes would not be to split the Mothership immediately,
but rather to not add anything new to it. All of our new features were
built as microservices...
“
„
Phil Calcado, Director of Engineering, Core, SoundCloud
77. 81CONFIDENTIAL
81
#4: STRANGLING THE MONOLITH
... gradually create a new system around the edges of
the old, letting it grow slowly over several years until
the old system is strangled.
“ „
Martin Fowler
78. 82CONFIDENTIAL
82
#5: DECOMPOSITION CANDIDATES
Start from bounded contexts identified within the monolith
OR
Identify the areas of the monolith’s code that will need to change in order to
deliver the changed requirements, and then extract the appropriate bounded
contexts before making the desired changes.
79. 83CONFIDENTIAL
83
WHEN TO STOP?
The monolith has been
completely strangled
Cost of additional service
extraction exceeds the
return on the necessary
efforts