This document discusses the transition from monolithic architecture to microservices architecture. It begins by outlining challenges with monolithic systems like long development cycles and difficulties scaling. It then defines microservices as loosely coupled services that have bounded contexts. The document provides examples of how to evolve a monolith to microservices by starting with existing services and gradually decomposing the monolith. It acknowledges challenges in distributed systems and eventual consistency that come with microservices. Overall, the document presents microservices as enabling faster innovation, increased agility and delighted customers compared to monolithic systems.
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Simplilearn
This presentation on "Introduction to DevOps" will help you understand what is waterfall model, what is an agile model, what is DevOps, DevOps phases, DevOps tools and DevOps advantages. In traditional software development lifecycle, there is a lot of gap between development and operations team. DevOps addresses the gap between developers and operations. The development team will submit the application to the operations team for implementation. Operations team will monitor the application and provide relevant feedback to developers. According to DevOps practices, the workflow in software development and delivery is divided into 8 phases, Now, let us get started and understand these 8 phases in DevOps.
Below topics are explained in this "Introduction to DevOps" presentation:
1. Waterfall model
2. Agile model
3. What is DevOps?
4. DevOps phases
5. DevOps tools
6. DevOps advantages
Simplilearn's DevOps Certification Training Course will prepare you for a career in DevOps, the fast-growing field that bridges the gap between software developers and operations. You’ll become an expert in the principles of continuous development and deployment, automation of configuration management, inter-team collaboration and IT service agility, using modern DevOps tools such as Git, Docker, Jenkins, Puppet and Nagios. DevOps jobs are highly paid and in great demand, so start on your path today.
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.
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/
CI/CD Best Practices for Your DevOps JourneyDevOps.com
The journey to realizing DevOps in any organization is fraught with a number of obstacles for developers and other stakeholders. These challenges are often caused by key CI/CD practices being misunderstood, partially implemented or even completely skipped. Now, as the industry positions itself to build on DevOps practices with a Software Delivery Management strategy, it’s more important than ever that we implement CI/CD best practices, and prepare for the future.
Join host Mitchell Ashely, and CloudBees’ Brian Dawson, DevOps evangelist, and Doug Tidwell, technical marketing director, as they explore and review the CI/CD best practices which serve as your stepping stones to DevOps and a successful Software Delivery Management strategy.
The webinar will cover CI/CD best practices including:
Containers and environment management
Continuous delivery or deployment
Movement from Dev to Ops
By the end of the webinar, you’ll understand the key steps for implementing CI/CD and powering your journey to DevOps and beyond.
The document discusses the use of Gerrit for code review in agile workflows. It begins by explaining some of the challenges of continuous integration, including broken builds that can occur when developers push untested code. It then discusses how Git addresses this issue by enabling early code integration through topic branches. However, it notes that Git alone does not enforce policy. Gerrit is introduced as a tool that builds upon Git to enable code review and enforce access controls and policies. It provides an overview of key Gerrit features like automatic topic branches, trigger builds, and democratic voting processes.
https://www.wrike.com - Traditional project management (PM) meant big projects, strict hierarchy and top-down planning. Today it’s vital to be quickly adjustable hence bureaucracy yields to collaboration. Smaller projects take fewer resources yet work out better than big ones. Successful teams turn out to be more productive via blogs, wikis and collaboration tools. Find out how you can upgrade your PM practices to 2.0.
This document discusses the transition from monolithic architecture to microservices architecture. It begins by outlining challenges with monolithic systems like long development cycles and difficulties scaling. It then defines microservices as loosely coupled services that have bounded contexts. The document provides examples of how to evolve a monolith to microservices by starting with existing services and gradually decomposing the monolith. It acknowledges challenges in distributed systems and eventual consistency that come with microservices. Overall, the document presents microservices as enabling faster innovation, increased agility and delighted customers compared to monolithic systems.
Introduction To DevOps | Devops Tutorial For Beginners | DevOps Training For ...Simplilearn
This presentation on "Introduction to DevOps" will help you understand what is waterfall model, what is an agile model, what is DevOps, DevOps phases, DevOps tools and DevOps advantages. In traditional software development lifecycle, there is a lot of gap between development and operations team. DevOps addresses the gap between developers and operations. The development team will submit the application to the operations team for implementation. Operations team will monitor the application and provide relevant feedback to developers. According to DevOps practices, the workflow in software development and delivery is divided into 8 phases, Now, let us get started and understand these 8 phases in DevOps.
Below topics are explained in this "Introduction to DevOps" presentation:
1. Waterfall model
2. Agile model
3. What is DevOps?
4. DevOps phases
5. DevOps tools
6. DevOps advantages
Simplilearn's DevOps Certification Training Course will prepare you for a career in DevOps, the fast-growing field that bridges the gap between software developers and operations. You’ll become an expert in the principles of continuous development and deployment, automation of configuration management, inter-team collaboration and IT service agility, using modern DevOps tools such as Git, Docker, Jenkins, Puppet and Nagios. DevOps jobs are highly paid and in great demand, so start on your path today.
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.
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/
CI/CD Best Practices for Your DevOps JourneyDevOps.com
The journey to realizing DevOps in any organization is fraught with a number of obstacles for developers and other stakeholders. These challenges are often caused by key CI/CD practices being misunderstood, partially implemented or even completely skipped. Now, as the industry positions itself to build on DevOps practices with a Software Delivery Management strategy, it’s more important than ever that we implement CI/CD best practices, and prepare for the future.
Join host Mitchell Ashely, and CloudBees’ Brian Dawson, DevOps evangelist, and Doug Tidwell, technical marketing director, as they explore and review the CI/CD best practices which serve as your stepping stones to DevOps and a successful Software Delivery Management strategy.
The webinar will cover CI/CD best practices including:
Containers and environment management
Continuous delivery or deployment
Movement from Dev to Ops
By the end of the webinar, you’ll understand the key steps for implementing CI/CD and powering your journey to DevOps and beyond.
The document discusses the use of Gerrit for code review in agile workflows. It begins by explaining some of the challenges of continuous integration, including broken builds that can occur when developers push untested code. It then discusses how Git addresses this issue by enabling early code integration through topic branches. However, it notes that Git alone does not enforce policy. Gerrit is introduced as a tool that builds upon Git to enable code review and enforce access controls and policies. It provides an overview of key Gerrit features like automatic topic branches, trigger builds, and democratic voting processes.
https://www.wrike.com - Traditional project management (PM) meant big projects, strict hierarchy and top-down planning. Today it’s vital to be quickly adjustable hence bureaucracy yields to collaboration. Smaller projects take fewer resources yet work out better than big ones. Successful teams turn out to be more productive via blogs, wikis and collaboration tools. Find out how you can upgrade your PM practices to 2.0.
Slide deck of the presentation done at the Hactoberfest 2020 Singapore event. The talk and demo showed GitHub Actions in practice with examples of Github Superlinter, SonarCloud integration and CI CD to Azure Kubernetes service.
The recording of the session is available on YouTube
https://youtu.be/sFvCj62wmWU?t=6732&WT.mc_id=AZ-MVP-5003170
- Archeology: before and without Kubernetes
- Deployment: kube-up, DCOS, GKE
- Core Architecture: the apiserver, the kubelet and the scheduler
- Compute Model: the pod, the service and the controller
The document discusses best practices for using Git including basic commands, branches, tags, and collaboration using GitHub. It covers Git fundamentals like committing, pushing, pulling and branching as well as more advanced topics such as rebasing, cherry-picking, stashing and using Git hooks for continuous integration. The presentation aims to help users learn to use Git more efficiently.
A detail review of configuration and change management. This lecture provides details about how to manage different software versions of same software in a market with different customers clients and different set of functionalities.
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
Here are two goals for each type for a car sharing system:
Quality-related goals:
- Usability: The system app is easy to understand and navigate for new users.
- Reliability: The vehicle locations displayed in the app are accurate at least 99% of the time.
Optimization goals:
- Increase availability: The number of vehicles available in high-demand areas increases 10% each year.
- Decrease costs: Operating costs are reduced by 5% annually through more efficient routing.
Behavioral goals:
- Reservation: Users can securely reserve vehicles through the app up to 30 days in advance.
- Payment: The system processes payments from users' accounts in real-time
DevOps is a software engineering culture and practice that aims to unify software development (Dev) and software operation (Ops) teams. The main goals of DevOps are to achieve shorter development cycles, increased deployment frequency, and more dependable releases that are closely aligned with business objectives. DevOps advocates for the automation and monitoring of all steps in the software development process, from integration and testing through release, deployment, and infrastructure management.
You just got “done” with the transformation of your organization (or parts of it) to leverage more DevOps practices, and now the next hot thing is taking over the industry: containers, Cloud Native, SRE, GitOps, Kubernetes, etc. What’s a DevOps Manager to do? Throw away the last few years and rebrand the team as Cloud Native SREs?
Technological advancement not only provides advancement in “what” a modern technology architecture looks like, it can also provide advancement in the processes and the day to day of an organization’s technology teams. We’ve seen this before in the move from mainframe to client-server, and client-server to Cloud.
In this presentation I’ll talk about the relationship of DevOps to Cloud Native technologies, and help make sense of all the jargon - containers, microservices, orchestration (and Kubernetes), SRE, GitOps, etc. I’ll also talk about how some processes & practices in the world of DevOps change when leveraging these technologies. Attendees will leave with a base understanding of what a DevOps operating model looks like when leveraging modern Cloud Native technologies.
My presentation from Nordic APIs 2014 in Stockholm, Sweden.
How can the architecture of one API platform look like? How can you break down things to make this challenge easier?
This document outlines 12 principles of agile development including satisfying customers, delivering working software frequently through short iterations, welcoming changing requirements, trusting team members, maintaining simplicity, self-organizing teams, and continuous improvement through reflection and adjustment. The principles emphasize customer satisfaction, frequent delivery, collaboration, simplicity, and adaptation through lessons learned.
Effective security requires a layered approach. If one layer is comprised, the additional layers will (hopefully) stop an attacker from going further. Much of container security has focused on the image build process and providing providence for the artifacts in a container image, and restricting kernel level tunables in the container runtime (seccomp, SELinux, capabilities, etc). What if we can detect abnormal behavior in the application and the container runtime environment as well? In this talk, we’ll present Falco - an open source project for runtime security - and discuss how it provides application and container runtime security. We will show how Falco taps Linux system calls to provide low level insight into application behavior, and how to write Falco rules to detect abnormal behavior. Finally we will show how Falco can trigger notifications to stop abnormal behavior, notify humans, and isolate the compromised application for forensics. Attendees will leave with a better understanding of the container security landscape, what problems runtime security solves, & how Falco can provide runtime security and incident response.
The document discusses Git and GitHub workflows. It begins by describing Git as a distributed version control system designed for speed, integrity and distributed workflows. It then explains Git's branching model including features, releases, hotfixes and how GitHub is used to collaborate through forking repositories and pull requests.
GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories
Presentation on the utility of git/GitHub for making scientific research findable, accessible, interoperable, and reusable.
Also includes a tutorial to the most essential features of git/GitHub.
Devops architecture involves three main categories of infrastructure: IT infrastructure (version control, issue tracking, etc.), build infrastructure (build servers with access to source code), and test infrastructure (deployment, acceptance, and functional testing). Continuous integration involves automating the integration of code changes, while continuous delivery ensures code is always releasable but actual deployment is manual. Continuous deployment automates deployment so that any code passing tests is immediately deployed to production. The document discusses infrastructure hosting options, automation approaches, common CI/CD workflows, and provides examples of low and medium-cost devops tooling setups using open source and proprietary software.
Guía de Referencia de Git, Herramientas y Clientes Windows, ideal para programadores que quieran inicarse en el control de sus proyectos bajo control de versiones distribuidos
Software Project Management: Change ControlMinhas Kamal
Software Project Management: ResearchColab- Change Control (Document-10)
Presented in 4th year of Bachelor of Science in Software Engineering (BSSE) course at Institute of Information Technology, University of Dhaka (IIT, DU).
Slides of talk given at London Study of Enterprise Agile Meetup in June 2019.
We go over GitOps and how it affects delivery speed in software development and release.
**Watch the full webinar at https://codefresh.io/events/terraform-gitops-codefresh/
Today we write "Infrastructure as Code" and even "Pipelines as Code", so let's start treating our "code as code" and practice CI/CD with GitOps! In this talk, we'll show you how we build and deploy applications with Terraform using GitOps and Codefresh. Cloud Posse is a Terraform power user that has developed over 130 Terraform modules which are free and open source. We'll share how we handle automation with security while making the process easy for engineers.
Most developers write code to fulfil a business requirement, however the cost of project is not decided by the development but by the effort maintenance. So the emphasis should be to write quality , clean code that minimizes time spent on maintenance.
This document discusses six microservices patterns that organizations can choose from to adopt a microservices architecture in a pragmatic way that fits their needs. It begins by introducing the concept of microservices patterns as overlapping approaches that share goals of speed, scalability and cohesion but have different priorities and tradeoffs. The document then describes six microservice patterns at an introductory level: fine-grained SOA, backend for frontend, resource-oriented, process-oriented, event-driven, and shared kernel. It argues that no single pattern is better and organizations should choose a mix of patterns based on their specific situation and goals.
Slide deck of the presentation done at the Hactoberfest 2020 Singapore event. The talk and demo showed GitHub Actions in practice with examples of Github Superlinter, SonarCloud integration and CI CD to Azure Kubernetes service.
The recording of the session is available on YouTube
https://youtu.be/sFvCj62wmWU?t=6732&WT.mc_id=AZ-MVP-5003170
- Archeology: before and without Kubernetes
- Deployment: kube-up, DCOS, GKE
- Core Architecture: the apiserver, the kubelet and the scheduler
- Compute Model: the pod, the service and the controller
The document discusses best practices for using Git including basic commands, branches, tags, and collaboration using GitHub. It covers Git fundamentals like committing, pushing, pulling and branching as well as more advanced topics such as rebasing, cherry-picking, stashing and using Git hooks for continuous integration. The presentation aims to help users learn to use Git more efficiently.
A detail review of configuration and change management. This lecture provides details about how to manage different software versions of same software in a market with different customers clients and different set of functionalities.
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
Here are two goals for each type for a car sharing system:
Quality-related goals:
- Usability: The system app is easy to understand and navigate for new users.
- Reliability: The vehicle locations displayed in the app are accurate at least 99% of the time.
Optimization goals:
- Increase availability: The number of vehicles available in high-demand areas increases 10% each year.
- Decrease costs: Operating costs are reduced by 5% annually through more efficient routing.
Behavioral goals:
- Reservation: Users can securely reserve vehicles through the app up to 30 days in advance.
- Payment: The system processes payments from users' accounts in real-time
DevOps is a software engineering culture and practice that aims to unify software development (Dev) and software operation (Ops) teams. The main goals of DevOps are to achieve shorter development cycles, increased deployment frequency, and more dependable releases that are closely aligned with business objectives. DevOps advocates for the automation and monitoring of all steps in the software development process, from integration and testing through release, deployment, and infrastructure management.
You just got “done” with the transformation of your organization (or parts of it) to leverage more DevOps practices, and now the next hot thing is taking over the industry: containers, Cloud Native, SRE, GitOps, Kubernetes, etc. What’s a DevOps Manager to do? Throw away the last few years and rebrand the team as Cloud Native SREs?
Technological advancement not only provides advancement in “what” a modern technology architecture looks like, it can also provide advancement in the processes and the day to day of an organization’s technology teams. We’ve seen this before in the move from mainframe to client-server, and client-server to Cloud.
In this presentation I’ll talk about the relationship of DevOps to Cloud Native technologies, and help make sense of all the jargon - containers, microservices, orchestration (and Kubernetes), SRE, GitOps, etc. I’ll also talk about how some processes & practices in the world of DevOps change when leveraging these technologies. Attendees will leave with a base understanding of what a DevOps operating model looks like when leveraging modern Cloud Native technologies.
My presentation from Nordic APIs 2014 in Stockholm, Sweden.
How can the architecture of one API platform look like? How can you break down things to make this challenge easier?
This document outlines 12 principles of agile development including satisfying customers, delivering working software frequently through short iterations, welcoming changing requirements, trusting team members, maintaining simplicity, self-organizing teams, and continuous improvement through reflection and adjustment. The principles emphasize customer satisfaction, frequent delivery, collaboration, simplicity, and adaptation through lessons learned.
Effective security requires a layered approach. If one layer is comprised, the additional layers will (hopefully) stop an attacker from going further. Much of container security has focused on the image build process and providing providence for the artifacts in a container image, and restricting kernel level tunables in the container runtime (seccomp, SELinux, capabilities, etc). What if we can detect abnormal behavior in the application and the container runtime environment as well? In this talk, we’ll present Falco - an open source project for runtime security - and discuss how it provides application and container runtime security. We will show how Falco taps Linux system calls to provide low level insight into application behavior, and how to write Falco rules to detect abnormal behavior. Finally we will show how Falco can trigger notifications to stop abnormal behavior, notify humans, and isolate the compromised application for forensics. Attendees will leave with a better understanding of the container security landscape, what problems runtime security solves, & how Falco can provide runtime security and incident response.
The document discusses Git and GitHub workflows. It begins by describing Git as a distributed version control system designed for speed, integrity and distributed workflows. It then explains Git's branching model including features, releases, hotfixes and how GitHub is used to collaborate through forking repositories and pull requests.
GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories
Presentation on the utility of git/GitHub for making scientific research findable, accessible, interoperable, and reusable.
Also includes a tutorial to the most essential features of git/GitHub.
Devops architecture involves three main categories of infrastructure: IT infrastructure (version control, issue tracking, etc.), build infrastructure (build servers with access to source code), and test infrastructure (deployment, acceptance, and functional testing). Continuous integration involves automating the integration of code changes, while continuous delivery ensures code is always releasable but actual deployment is manual. Continuous deployment automates deployment so that any code passing tests is immediately deployed to production. The document discusses infrastructure hosting options, automation approaches, common CI/CD workflows, and provides examples of low and medium-cost devops tooling setups using open source and proprietary software.
Guía de Referencia de Git, Herramientas y Clientes Windows, ideal para programadores que quieran inicarse en el control de sus proyectos bajo control de versiones distribuidos
Software Project Management: Change ControlMinhas Kamal
Software Project Management: ResearchColab- Change Control (Document-10)
Presented in 4th year of Bachelor of Science in Software Engineering (BSSE) course at Institute of Information Technology, University of Dhaka (IIT, DU).
Slides of talk given at London Study of Enterprise Agile Meetup in June 2019.
We go over GitOps and how it affects delivery speed in software development and release.
**Watch the full webinar at https://codefresh.io/events/terraform-gitops-codefresh/
Today we write "Infrastructure as Code" and even "Pipelines as Code", so let's start treating our "code as code" and practice CI/CD with GitOps! In this talk, we'll show you how we build and deploy applications with Terraform using GitOps and Codefresh. Cloud Posse is a Terraform power user that has developed over 130 Terraform modules which are free and open source. We'll share how we handle automation with security while making the process easy for engineers.
Most developers write code to fulfil a business requirement, however the cost of project is not decided by the development but by the effort maintenance. So the emphasis should be to write quality , clean code that minimizes time spent on maintenance.
This document discusses six microservices patterns that organizations can choose from to adopt a microservices architecture in a pragmatic way that fits their needs. It begins by introducing the concept of microservices patterns as overlapping approaches that share goals of speed, scalability and cohesion but have different priorities and tradeoffs. The document then describes six microservice patterns at an introductory level: fine-grained SOA, backend for frontend, resource-oriented, process-oriented, event-driven, and shared kernel. It argues that no single pattern is better and organizations should choose a mix of patterns based on their specific situation and goals.
Technology is enabling greater product offerings in financial services but also bringing challenges of managing increasingly complex systems over time. Legacy systems can be difficult to migrate and modernize due to their age and number of products supported. Business knowledge is lost when outsourcing increases. Systems are becoming old yet critical, and supporting outdated closed products is costly. Compliance requirements also continuously add management challenges. When redesigning such systems, it is important to focus on information rather than individual applications or technologies, separate stable and changing elements, and design for continuous change, monitoring and knowledge distribution across teams.
Technology is enabling greater product offerings in financial services but also bringing challenges of managing aging complex systems over long periods. To manage constant change, a good architecture separates elements that change frequently from those that don't. Microservices principles allow isolation while avoiding silos. Focusing on information modeling rather than representations reduces issues when characteristics change. Monitoring and auditing must be built-in due to regulatory requirements. Drawing from open source practices helps manage ongoing versions and releases in a complex environment. Ultimately new systems may be needed to fully take advantage of new technologies and avoid accumulating further technical debt from old systems.
This course provides a detailed introduction to the Object Oriented techniques identified by Robert Martin as the SOLID principles of software design. Intended for both novice and intermediary developers, each of the five principles are fully defined and explored. Real-world coding examples are provided for each software tenant to help fully expound upon the design techniques. By the end of the session, developers will be able to identify common code smells while applying SOLID programming practices that ensure clean and maintainable code.
This document discusses the value of including end-users in the system development process. It defines end-users as the everyday users of a finished product. Involving end-users can provide advantages like quicker design, higher user acceptance, and new ideas. However, there are also disadvantages like limited technical knowledge. The document examines how to select which end-users to involve and measures of user satisfaction. It outlines drawbacks of not involving end-users such as user resistance, higher costs, and a poor relationship between end-users and IT.
This document discusses various concepts and best practices for building reliable software systems. Some key points include:
1) Failure is inevitable in software systems and 100% reliability is not feasible. The focus should be on building resilience and quick detection/recovery from failures.
2) Reliability is a cultural aspect and needs to be prioritized from the beginning, not added as an afterthought. Changes over time can introduce new failures.
3) Automation, documentation, testing, metrics, logging, and incident response planning help improve reliability and make issues easier to detect and resolve.
An ultimate guide to SOLID Principles, developers must know.ONE BCG
SOLID Principles represent a set of guidelines that helps us to avoid having a bad design. It is a set of design principles in object-oriented software development.
The document discusses various topics related to software engineering including:
1) How early days of software development have affected modern practices.
2) Definitions of software engineering from different sources.
3) The stages of software design including problem analysis, solution identification, and abstraction description.
4) Object-oriented design principles like information hiding, independent objects, and service-based communication.
- TRIZ has a concept called ideality, which is the ideal state of a system where all functions are achieved without problems.
- The author argues organizations should focus on moving products and processes towards ideality, rather than just addressing gaps with competitors. Nokia failed to do this with smartphones.
- To help organizations visualize moving towards ideality, the author created an ideality matrix tool to map out contradictions at different system levels and track progress resolving them through innovation. This case study provides an example of how the ideality matrix was used to improve a material planning process.
Software Architecture for Agile DevelopmentHayim Makabee
Slides of a workshop given at Herzliya on June/2017, organized by ILTAM and IASA Israel. This workshop was dedicated to the topic of Software Architecture in the context of Agile Development. We answered the question: “How much Design Up Front should be done in an Agile project?” Hayim presented his approach of Adaptable Design Up Front (ADUF), describing its rationale, applications in practice and comparison to other approaches such as Emergent Design. He explained why adaptability is essential for the development of complex software systems using Agile methods. The concepts were illustrated through practical software architecture approaches such as micro-services and examples of real software systems that were developed in the past. The workshop also included an exercise on the definition and evolution of the design of an interesting system.
Patterns of Evolutionary Architecture - Agile and Beyond 2018Shawn Button
In Agile you should start with the simplest thing that will give you value, and iteratively build on top of that. But how does that work with a Legacy Enterprise Application that everyone is terrified to touch? Or what if we need to build an application that handles millions of transactions a day? How can we make sure that our architecture will meet our needs two years from now, when we don’t know what the application will look like? And how does the process of architecture work in an Agile environment? Join Chris and Shawn in this interactive session, as they explore these topics. Learn architectural patterns that allow you to evolve your architecture. Examine techniques to help you work with legacy apps and dependencies. Learn how good architecture allows us to manage technical risk. See how business and technical people can work together to build an incremental plan for your product.
This document provides an overview of different approaches to project management and software development lifecycles, including waterfall, iterative, spiral, prototyping, and agile models. It discusses the benefits and drawbacks of each approach. The waterfall model is described as the original but inflexible model, while agile approaches emphasize iterative development and customer collaboration over documentation and plans. Project management involves assigning duties to team members over a project's course.
The Role of the Architect in ERP and PDM System DeploymentGlen Alleman
The architect’s role in the development of an ERP or PDM system is to maintain the integrity of the vision statement produced by the owners, users, and funders of the system.
Four ways to represent computer executable rulesJeff Long
July 27, 2008: "Four Ways to Represent Computer-Executable Rules". Presented at InterSymp 2008 conference sponsored by the International Institute for Advanced Studies
in Systems Research and Cybernetics (IIAS). Paper published in conference proceedings.
This document discusses and compares several agent-assisted methodologies for developing multi-agent systems:
- It reviews Gaia, HLIM, PASSI, and Tropos methodologies, outlining their key models and phases. Gaia focuses on analysis and design, HLIM models internal and external agent behavior, and PASSI and Tropos incorporate UML modeling.
- It then proposes a new MAB methodology intended to address shortcomings of existing approaches. MAB includes requirements, analysis, design, and implementation phases and models such as use case maps and agent roles.
- Finally, it concludes that agent technologies represent a promising approach for developing complex software systems, but that matching methodologies to problem domains and developing princip
In the context of Iterative Software Development, we ask the question: How much design should be done "up front"?
We propose the approach of Adaptable Design Up Front, which focuses on capturing the essential aspects of the system and plans for extensibility and adaptability.
The document discusses software design, which involves deciding how to implement system requirements using available technology. It covers topics like software architecture, dividing a system into subsystems and interfaces. The key benefits of design are that it makes a project easier to implement, test and maintain. Good design leads to good quality software while bad design can make a project impossible. The phases of design process include architectural design, class design, user interface design, and algorithm design. Design principles discussed aim to divide problems into smaller parts, increase cohesion, reduce coupling, use abstraction, design for flexibility and testability.
The document discusses software design principles and processes. It defines software design as deciding how to implement requirements using available technology. The key aspects discussed are:
1) Software design includes systems engineering, software architecture, and detailed subsystem design.
2) Good design following principles like high cohesion and low coupling makes a project easier to implement, maintain and test.
3) The design process involves architectural design, class design, user interface design, and other phases.
Similar to Patterns of Evolutionary Architecture (20)
Continuous Deployment Through Technical ExcellenceShawn Button
This document discusses continuous deployment and what is required to achieve it. Continuous deployment means code is always deployed to production. It requires version control, build/deploy pipelines, infrastructure as code, frequent and safe code updates, separation of rollout and activation, and good observability. Achieving it also requires changes to testing, coding, organization, planning, and learning practices. The document recommends starting with improving deployment frequency metrics and removing impediments through small experiments. It emphasizes improving incrementally based on what teams are passionate about or experiencing pain with.
This document summarizes a presentation on overcoming dysfunctional programming through functional programming techniques. It discusses:
- Who the presenters are and their backgrounds in agile coaching.
- An agenda that includes introductions to functional programming terms, using FP in existing code, improving designs with FP, and a recap.
- Key FP concepts like pure functions, higher order functions, and avoiding side effects.
- Ways FP can be used to refactor common patterns like command and state patterns.
- Benefits of FP like testability, error handling, and concurrency, but also challenges of adopting it with teams.
The document outlines the scientific method for troubleshooting problems. It discusses observing the problem, collecting observations, creating hypotheses, designing experiments to test hypotheses, performing experiments, and evaluating results. The goal is to iteratively falsify hypotheses through experimentation and build understanding of the system until reaching a solution. Applying this structured process of testing hypotheses through experimentation can help solve problems in a rigorous way.
Presentation about how you can make effect in your organization.
Presented at Agile Tour Toronto, Agile Ottawa and PMI-SOC Professional Development Day.
The document provides guidance for how to be an effective change agent within an organization. It discusses tools for understanding company culture and resistance to change, mapping political landscapes, building trust with others, and working on personal effectiveness. The key recommendations are to model desired behaviors, create a positive culture bubble, use early adopters to spread ideas, listen to understand other perspectives, celebrate small wins, and reflect regularly on progress.
Sdec 13 winnipeg - want to empower your people- just begin! old-pp_versionShawn Button
This document outlines an approach called BEGIN for enabling self-organization in teams. It discusses:
- What self-organization is and examples of self-organizing systems.
- Potential problems with trying to implement self-organization.
- The BEGIN model for setting up initial conditions for self-organization, which stands for Boundaries, Empowerment, Goals, Ingredients, and Nurture.
- Examples of how to apply each element of BEGIN, such as explicitly listing team boundaries and the authority granted to the team.
- Interactive exercises where attendees drew pictures and applied BEGIN to hypothetical scenarios to experience self-organization.
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
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
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
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.
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.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Why Mobile App Regression Testing is Critical for Sustained Success_ A Detail...kalichargn70th171
A dynamic process unfolds in the intricate realm of software development, dedicated to crafting and sustaining products that effortlessly address user needs. Amidst vital stages like market analysis and requirement assessments, the heart of software development lies in the meticulous creation and upkeep of source code. Code alterations are inherent, challenging code quality, particularly under stringent deadlines.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
Atelier - Innover avec l’IA Générative et les graphes de connaissancesNeo4j
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Allez au-delà du battage médiatique autour de l’IA et découvrez des techniques pratiques pour utiliser l’IA de manière responsable à travers les données de votre organisation. Explorez comment utiliser les graphes de connaissances pour augmenter la précision, la transparence et la capacité d’explication dans les systèmes d’IA générative. Vous partirez avec une expérience pratique combinant les relations entre les données et les LLM pour apporter du contexte spécifique à votre domaine et améliorer votre raisonnement.
Amenez votre ordinateur portable et nous vous guiderons sur la mise en place de votre propre pile d’IA générative, en vous fournissant des exemples pratiques et codés pour démarrer en quelques minutes.
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.
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
4. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
5. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap UpWrap Up
6.
7. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
8. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
10. Change
Change in an application is inevitable.
We need to support:
1. New business requirements (“We need to sell a new
type of widget”)
2. Updates to existing technologies (“We need to patch
our platform’s security hole ASAP”)
3. New technologies (“This database doesn’t support our
needs, we need to move to a NoSQL db”)
4. New non-functional needs (Yah, our business is
booming. Oh SH*T, our business is booming!)
11. Principle - Design for Change
Since change is inevitable, let’s design our
architecture to expect change, harnessing it for
the customer’s advantage.
14. Principle - Evolvability as First-Class Architectural Concern
Architecture involves a series of trade-offs. There are many different concerns
that you need to juggle. Non-functional requirements (NFRs) like scalability,
performance, security. As well there are business features are the point of the
application.
The requirement to deliver quickly, and to be able to evolve our application
over time should prioritized against our need for performance, etc. They
because “first class citizens” in all architectural tradeoffs.
Alongside concerns such as scalability, performance, security, etc. Frequent
Delivery and Evolvability and should be primary concern.
15. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
16. To-Do Doing (1) Done
Intro
Guiding
PrinciplesCoupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
18. Coupling in software occurs whenever a change in one component requires
changes in another component and this affects the evolvability of your
application. Some degree of coupling may be necessary, you want to minimize
the coupling and keep it isolated and at system boundaries. When coupling is
uncontrolled you can get yourself into a big ball of mud situation.
Some examples of coupling are 3rd party systems, communication patterns
and data structures.
Principle - Coupling
20. Anti-pattern: Big Ball of Mud
“A Big Ball of Mud is a casually, even haphazardly, structured system. It’s
organization and structure appears to be dictated more by expediency than
design. A quick fix here, a bandaid there, a temporary solution on top of
another and what was once tidy becomes overgrown as piecemeal growth
allows elements of the system to sprawl in an uncontrolled fashion”
- Brian Foote - 1999
22. Inappropriate and Appropriate Coupling
Coupling can either hamper the evolution of your architecture or help
accelerate it if applied appropriately.
Coupling is inappropriate when your architecture is being constrained by
previous design choices or external libraries and frameworks. When changes
and fixes are isolated and generally not risky; components are small with
minimal dependencies then coupling is appropriate.
24. Risky changes, long periods of instability, developers afraid to make changes
to parts of the code, unable to adapt to a new framework. These are types of
inappropriate coupling and they really affect how your architecture can evolve
and change as business requirements change. Often coupling hides behind
the promise of speed and utility but when not looked out for, your
architecture can run off the rails
Some examples of inappropriate coupling are
● Utility classes - sticking functions such as formatting functions (date
format, number format, money format) in a single class
● Single object type representation throughout application (e.g.. A canonical
Product type)
● Using a 3rd party’s data type throughout your application (eg. A Facebook
User type)
Inappropriate Coupling
26. Anti-Pattern: Spooky Action At A Distance
- Not applying the DRY Principle: Every piece of knowledge must have a
single, unambiguous, authoritative representation within a system
-
- Changing one thing affects something else, potentially unrelated
- Changes to the UI should not have any effect on the database and
many database changes should not affect the UI
28. Anti-Pattern: Misapplying the DRY Principle
In many architectures it is common to have a small set of core classes or types
that represent core domain concepts in your organization.
It is tempting to have only one such type for each concept (eg. A single
Product class type or Customer class), however different parts of your
organization will have different interpretations of what each of these
concepts.
Attempting to have a single model to put all of these interpretations in a single
type leads to ambiguity and a model that is more difficult to understand.
30. Cohesive Systems - Appropriate Coupling
When a change in one thing does not affect any other thing then the system is
exhibiting an appropriate level of coupling or cohesiveness. A highly cohesive
system exhibits reduced risk, increased productivity, and components are
simplified and generally “Do one thing really, really well”. Testing of
components is much simpler as the degree of cohesiveness increases, the
amount dependencies decreases.
As individual components become simplified and more cohesive their
interactions with other components may become more complex. A message
passing function call from type to another type is highly coupled, passing the
same message over a message bus requires a higher degree of infrastructure
complexity.
35. Pattern: Bounded Contexts
Multiple models exist within a large project, when code based on distinct
models is combined software becomes buggy, unreliable and difficult to
understand. It’s also often unclear which context a model should not be
applied. A Bounded Context gives team members a clear and shared
understanding of what has to be consistent and what can develop
independently.
Explicitly set boundaries and keep model strictly consistent within these
bounds
37. A layer that permits only the information your model needs to pass through
when other models (or systems) are communicating to it. Permit information
through the anti-corruption layer in a format that works best for your model
and discard the external model’s representation. This allows your model to
evolve in a manner that works best for it and not be affected by changes in
the external model’s own evolution.
An anti-corruption layer can also abstract away dependencies when working
with frameworks and existing legacy code bases
Pattern: Abstraction / Anti-Corruption layer
38. To-Do Doing (1) Done
Intro
Guiding
PrinciplesCoupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
39. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
41. Principle: Changeable/Deferred Decisions
Changeable Decisions
Whenever possible we want to make our decisions changeable. If we can
change our decisions it protects us from the risk of future unknowns.
Deferred Decisions
For changes that are hard to reverse, figure out ways that we can defer the
decisions as much as possible. The longer we wait the more we know about
what we actually need.
43. Anti-Pattern: Big Design Up Front
We are afraid of making mistakes in design, so we spend a lot of time
analyzing and designing up front, in order to make sure we get it right the first
time.
Unfortunately:
● We won't get it right. No matter how much effort we put into it.
● We will add things to our architecture that we will not need.
● It will delay our ability to deliver something quickly to customers to get
early value and feedback.
46. Pattern: Lightweight Collaborative Design
While we want to minimize up-front design, we still have to think about the
architecture.
Create lightweight, collaborative, living design.
For example, do it in front of a white-board with the entire team.
48. Pattern: Build Throwaway Prototypes
In order to see if a technology decision is correct, make a quick prototype.
We stress that they should be throwaway, because we need to keep them light,
and just do the minimum that we need in order to learn if it is suitable.
If you are faced with a choice between several architectures, do prototypes for
both and learn which works best for you. Do “set-based” design, where you
explore multiple alternatives at once.
50. Pattern: Sacrificial Architecture
Since we understand that it is difficult and expensive to get our architecture
perfect up front, be prepared to throw away any architectural element.
A great example is Twitter. They started with Ruby on Rails, which allowed
them to quickly get into the market. When they needed to scale they changed
their architecture. Yes it was painful to change, but they were able to get into
the market quickly, and as they scaled they had a much better idea of their
needs.
51. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
52. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
54. Principle: YAGNI (You Ain’t Gonna Need It)
As engineers we have the desire to build a robust framework that will handle everything
that we ever need to handle, forever into the future.
The problem is that only a subset of the cool features we add will ever get used. The
rest just add complexity and slow us down.
When you design your architecture keep YAGNI in mind. Only add something if you
need it to deliver a feature for a needed non-functional requirement.
If you’ve built an evolvable architecture you can always add it later!
56. Anti-Pattern: Enterprise Platform
The company creates a platform for all teams to use, with the best of intentions:
● Faster delivery by providing the plumbing.
● People can move between teams because the platform is the same.
● We can enforce governance, monitoring, etc.
Unfortunately this is a form of coupling that can slow teams down.
● They are dependent on a framework, and they can’t change.
● In order to make it work for everyone’s needs it will get bigger and bigger, and then
it won’t really work well for anyone.
58. Anti-Pattern: If Framework is Good, Use It All!
E.g. Spring :)
Really, it’s the urge for over-complication that’s the problem.
Find the simplest way to do something. Do it. Maybe that’s enough. If not you
can come back and add to it later (see also YAGNI)
As much as possible keep your domain logic agnostic of the framework you
are using! Build an abstraction layer between you and your framework.
60. Anti-Pattern: Vendor King / Last 10% Trap
Buying a product from a big vendor can seem very attractive. They
promise you that they give you the features you want without needing
those nasty developers.
● First 80% is easy. Next 10% is hard. Last 10% is impossible.
● Might not support for rapid delivery (no automated tests, poor code
control practices, hard to deploy)
● Might be hard to evolve (locked into a someone else’s architecture)
● Vendor Lock-in - Makes it hard to change your mind
● Look for vendors that allow
This also might apply to the frameworks you use. There lock-in pressure
when you choose to use Drupal, Rails, Spring, Angular, etc.
As much as possible keep your domain logic agnostic of the framework
you are using!
62. Anti-Pattern: Premature Micro-Services
Microservices are a great way to encourage decoupling components.
But they come with extra complexity around design, code management,
deployment, testing, operations.
They might also not be appropriate when you are in MVP stage.
This doesn’t mean don’t do it, but realize that you need to build the
infrastructure, the discipline and the practices to support it.
Start slow with a couple of services. Grow your services as you learn how to do
it.
63. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
64. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
67. Principle - Frequent Delivery
Focus on delivering more frequently.
In order to evolve your architecture you need
the infrastructure, discipline and practices to
allow you to deploy frequently with safety.
(Side benefits: gives us opportunities for earlier value and
feedback. You know, agility).
69. Pattern: Automate All The Things
Delivering frequently will require a lot of re-work and will be dangerous, unless
you can automate your repetitive tasks:
● Testing (unit -> end-to-end)
● Deployment
● Environment provisioning
● Performance testing
● Production monitoring
● Tech debt measures (test coverage, complexity, etc.)
● etc….
71. Pattern: Invest in Practices
Delivering frequently requires discipline and heavy investment in modern
technical practices. You will need
This might require:
● Creating new “Devops” infrastructure
● Training/coaching/mentoring in the new practices
● Hiring new people with the new skills
● Slowing down a little until you gain the ability to speed up (relief from
deadlines)
72. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
73. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
76. Anti-Pattern: The Rewrite Trap
- Always harder than you expected
- Takes longer
- While we are re-writing we still have to keep the old system updated, so
making changes in two places
- Faced with the same compromises that you made the first time
- Using the same people and the same practices, we will end up with the
same mess
Company killing examples: Lotus 123, Mozilla
78. Pattern: Improve Incrementally
To avoid the dangerous and risky rewrite trap improve your legacy application
incrementally.
Pull out a small bits of behaviour, while keeping the existing application
running.
The new pieces can be built with modern architectural concerns, including
evolvability.
Eventually you may have moved everything over to the new architecture, and
can decommission the legacy application.
80. All transactions
Strangler Pattern in Action - The Interceptor
Client
Scary
Legacy
App
Backend
System
Interceptor
/ Facade
New
Business
Logic
Some transactions
81. Pattern - The Strangler
Don’t rewrite your legacy application in one go. Incrementally move features
over to your new architecture, while keeping the old one running.
Gradually evolve a new system over the edges of the old.
Intercept transactions going to your legacy system, and route them to the
new.
It works best if the old and new systems are not aware of each other.
82. Pattern - Sprout Component
Client
Scary
Legacy
App Backend
System
New
Business
Logic
New
Some “Seam”
83. Pattern - Sprout Component
From Michael Feathers “Working Effectively With Legacy Code.” Feathers
described it as a way to refactor existing code. Find a “seam” into the existing
app, and write new behaviour in a new method or class.
But this could also be used at a higher architectural level.
Potential seams:
● Method calls in code
● Events on a message Bus
● Significant business events
● Table updates
● Log files
○ 3rd party integrations
○ File extracts (eg. Excel, CSV)
There’s lots of options. Be Creative!
84. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
85. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
87. Principle - People First
As technologists we have an instinct to try to solve our problems through
processes or tools.
Unfortunately a lot of our problems are only solvable through individuals and
interactions.
88. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
89. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
90. Conway’s law
“Any organization that designs a system
(defined broadly) will produce a design
whose structure is a copy of the
organization's communication structure.”
- Melvin Conway
91.
92. Consequence of Conway’s Law
Your company’s organization structures will exert pressure on the architecture
of your applications.
For example, if you have “back-end,” “middle-tier,” and “front-end” hierarchies,
and you are attempting trying to move to a micro-service architecture you will
find it difficult. And in fact you might end up building “micro-services” that are
“middle-tier” and “back-end” services, rather than being organized around
your domain.
94. Principle - Organize to take advantage of Conway’s
Law.
Define an org structure that supports your real or desired application
structure.
Minimize dependencies between teams (which slow you down) by organizing
to match your architecture.
96. Pattern - Autonomous Feature Teams
A feature team has all of the necessary resources, skills and autonomy to
complete end-to-end customer features on their own. They work across all
components and disciplines.
(As opposed to a “component team” that only delivers one of many pieces that
are needed to deliver customer value).
By organizing into feature teams you lessen the dependencies that will slow
down delivery.
98. Pattern - Product over Project
People working on a “project” expect that they are on a temporary
assignment. When it’s done, they will move on to other projects.
The application is seldom treated as a 'product', that needs to live in
production for many years after the project is completed.
This encourages short-term thinking - deliver the next set of features - rather
than taking attempting to maximize the the long-term value of the product.
This leads to problems such as the accumulation of technical debt.
Long-term, product thinking is essential for people from both business and
technology.
99. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
100. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
102. ● Good architecture can’t be done in a isolation
● Different perspectives make a better product
● Avoid the us against them mentality “Business doesn’t know
what they’re talking about”, instead work together to reach
your shared goal
Principle - Work Collaboratively
104. Anti-Pattern - Internal Vendor/Customer
Relationship
Everyone that’s necessary to produce value for the customer (business,
technology, operations, etc.) should have the shared goals of the maximizing
value delivered to the customer.
Unfortunately we often find an antagonistic relationship between these
groups. It seems that it becomes more important to “win” or to assign blame
the other groups, than to work together to create valuable software.
106. Pattern - Shared Prioritization
We make an artificial distinction between “business features” and
“architecture.” In reality both are necessary to deliver value to our customers.
Prioritize architectural concerns (such as performance, security, technical
quality, evolvability, etc), UX requirements (usability, accessibility), alongside
business requirements as peers.
This is fractally collaborative - it applies at team, product, and portfolio level.
108. Anti-Pattern - Ivory Tower Architecture
Architecture that is devised hidden away in relative isolation from the
day-to-day development activities suffers from significant problems.
The models in this type of architecture are often designed with little or
no input from the development teams who will be charged with coding
the architecture “vision”.
Perfect in theory, but often unproven and incomplete, ivory tower
architectures often fall victim to over complications and reflect features
from every system the architects were involved with instead of what is
necessary to solve your business problem.
110. Being the repository of all knowledge and decision making makes them into a
dependency, and an impediment to teams delivering rapidly.
Architects might struggle with finding their new role in an environment where
autonomous feature teams are rapidly delivering.
They need to transition to being a coach and mentor.
They need to teach teams how to create good architecture, and eventually
empower the teams to make their own architectural decisions.
Pattern - Architect as Coach
111. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
112. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
113. Unix Principles:
1. Make each program do one thing well. To do a new job, build afresh
rather than complicate old programs by adding new “features”.
2. Expect the output of every program to become the input to another, as
yet unknown, program. Don't clutter output with extraneous information.
Avoid stringently columnar or binary input formats. Don't insist on
interactive input.
3. Design and build software, even operating systems, to be tried early,
ideally within weeks. Don't hesitate to throw away the clumsy parts and
rebuild them.
4. Use tools in preference to unskilled help to lighten a programming task,
even if you have to detour to build the tools and expect to throw some of
them out after you've finished using them.
Doug McIlroy, E. N. Pinson, B. A. Tague (8 July 1978). "Unix Time-Sharing System Forward". The Bell System Technical Journal. Bell
Laboratories. pp. 1902–1903.
None of This Is New!
116. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up
117. To-Do Doing (1) Done
Intro
Guiding
Principles
Coupling
Changeable
Decisions
Y.A.G.N.I.
Frequent
Delivery
Legacy
Apps
People
Patterns
Conway’s
Law
Work
Together
Wrap Up