SlideShare a Scribd company logo
Software Principles and Project
Deadlines Don’t Have to be Polar
Opposites
By Craig Saunders
Classified as General
Legal
© Kindred Group plc 2021 2
Classified as General
Premise
© Kindred Group plc 2021 3
“
As Software Engineer’s we pride ourselves to build high quality
software using the best industry practises and principles.
But what happens when you’re asked to deliver a project with
impossible timescales where a quick hacky solution is all that time
allows.
This presentation talks through such a scenario where and
how we managed to achieve the right solution but also met
the business deadline.
In addition it talks briefly about the key principles we
followed to achieve this feet.
Classified as General
Bio - Life
© Kindred Group plc 2021 4
Software Engineer with 26 years experience
Started writing C with Vi, moving onto C++ and Java
Worked with Microservices for about 6 years
Worked predominately with distributed systems
Huge tech advocate – love playing with the toys
Classified as General
Bio – At Kindred
© Kindred Group plc 2021 5
Job title is a Line Lead, but that’s not all what I do
Work in the strategic side of software development
Work closely with Architects, Stakeholders and POs
Help steer and mentor the development team(s)
I’ve sometimes been called the octopus – many hats
Classified as General
Bio Cont…
© Kindred Group plc 2021
Ultimately, I’m a geek who likes playing with the toys!!
Classified as General
Who is Kindred?
© Kindred Group plc 2021 7
A tech company that operates in the online gambling space
Classified as General
© Kindred Group plc 2021 8
Kindred Stats and Facts
01
Broke up the monolith in 2010
Kindred were an early adopter to Microservices and are now in position of refactoring their
microservice architecture. We also make use a lot of event-driven architecture.
02
310, and counting, microservices in production
We currently have 310 microservices which has tripled in the last 2 to 3 years. With the drive to
challenge with the best-in-class platform, we our ability scale with smaller purposeful services.
03
Strive for Continuous Delivery – 11k releases per year
Analysis has shown that the more releases we do the less system outages we see. With this we
strive, where regulation permits, frequent releasing on smaller pieces of development. We have a
zero-downtime policy too – only in exceptional cases which must be justified and approved.
04
Operate in a strict compliance and regulated industry
Due to the nature of the industry, we operate in, we are heavily regulated.
05
Deploy software onto Kubernetes
We are cloud agnostic and see Kubernetes as a key strategy to be able to deploy into new
markets at speed and be able to scale to needs of that market.
Classified as General
© Kindred Group plc 2021 9
Kindred Stats and Facts
06
Team responsibility for monitoring and observability
Each team is responsible for the health, monitoring of its components – you
must look after your own babies. There are guidelines, but the team decides how
they want to be alerted and handle production incidents.
07
Team ownership for development and Agile process
Each team is responsible for how they deliver, provided it can align at the macro-
level. Any Agile process can be used but is typically SCRUM or Kanban.
08
Upwards of 1.8 million active customers
We have 1.8 active customer – determined over a quarterly period. During the
last World Cup, we had 1 million plus customer in one month.
09
Average of 45M+ wallet transactions per day
We see peaks of 60+ million wallet transactions per day, which is now double
what we achieved as an all-time-high during the World Cup of 2018. The
average is 45M+.
10
Send-out capability to target 3M+customer per day
Depending on what events are happening, our tech capability allows Marketing
to target upwards of 3M+ customers a day (especially around Advent).
Classified as General
Set the Scene
© Kindred Group plc 2021 10
Classified as General
Sound Familiar?
© Kindred Group plc 2021 11
“ I know this is a crazy
deadline but what can I do.
I’m told failure is not an
option.
- Team Lead
“ We have to hit this deadline.
Anything else is a nice to
have.
- Product Owner
“ We’ve a lot of money riding on
this product launch, we can’t
be late.
- Business Stakeholder
“ We’ve already paid for the
Marketing advertisement.
- Marketing Manager
Classified as General
Time to Cry?
The amount of
tech debt this
will incur will hurt
us in the future
We haven’t even
been able to remove
the debt since the
last hack job!!
How’s this
going to be
possible?
Will we ever have
time to develop
software properly
Classified as General
How Do We Get Here?
© Kindred Group plc 2021 13
At times it’s like we are diametrically opposed
Classified as General
Blame Game? No
© Kindred Group plc 2021 14
It’s not a blame game, we’re both in it to succeed
Classified as General
Let’s Get Down to the Tech
© Kindred Group plc 2021 15
Classified as General
© Kindred Group plc 2021 16
Domain Driven Design
01
Ubiquitous Language
A practise of building up a common, rigorous language between developers, users and
stakeholders to ensure we are all talking on a way that we all understand.
02
Bounded Contexts
A defined part of software where particular terms, definitions and rules apply n a consistent way.
03
Maintaining Model Integrity
Defining how different bounded contexts interact with each. E.g. conformist, shard kernel, open
host, anti-corruption layer, etc..
04
Isolating the Domain – Layer Architecture
Ensuring the business domain layer is separated supporting layers to surface the business
concepts, and business rules.
05
Continuous Integration
Continuous/constant communication between the team members –most notable t by
hammering out the ubiquitous language, In addition continuous testing of the bounded contexts
and how the interact with other bound contexts. .
Classified as General
© Kindred Group plc 2021 17
Clean Architecture
01
SOLID Principles
Six key principles to help guide development in the right way. E.g., Single Responsibility, Open-
closed Principle, Liskov’s Rule of Substitution, etc.
02
Component Principles – and extension of SOLID
Principles which are similar to SOLID but at the component boundary. Such examples are
common closure principle, common reuse principle, reuse/release equivalence principle, etc
03
Setting Boundaries
Boundaries are lines that separate software elements. They separate things that matter from
things that don’t, i.e., high-level components from low-level components.
04
Separating the Layers – Port & Adapters
Layers are concentric and represent how fundamental (or high-level) components are. At the
core, we have the high-level policies, i.e., stable and abstract components encapsulating our
business rules. On the outer ring, we have the details, for example, unstable and concrete GUI’s..
05
Clean Code
Clean code helps toe surface the elements of the system so that everyone can understand the
wood from the trees.
Classified as General
So What Do We Do About It?
© Kindred Group plc 2021 18
Let’s Dive In
Classified as General
© Kindred Group plc 2021 19
Current System
Comms
Gateway
ADAPTER
Campaign
System
ADAPTER
Unica Adapter
ADAPTER
Audience
Platform
Send-out
Platform
Comms
Platform
CustomerSelectionEvent
The customer selection event is
fired every time a customer is
being targeted as part of the
campaign send-out.
CommunicationsGatewayMarketingPublication
The event that is fired to instruct the
communications platform to send comms to a
customer.
Classified as General
© Kindred Group plc 2021 20
Current System – Focus Area
Campaign
System
ADAPTER
Send-out
Platform
Classified as General
This Wasn’t Going to Work
© Kindred Group plc 2021 21
Campaign System
ADAPTER
The component had become a micro-monolith
Needed to support real-time send-outs, which it didn’t
We had numerous performance issues
Development took longer due to huge tech debt
Wasn’t compatible with our Kubernetes strategy
Classified as General
© Kindred Group plc 2021 22
Target State
Campaign
Send-out
Snapshot
ADAPTER
Campaign
Association
ADAPTER
Test Accounts
Adapter
ADAPTER
Campaign Send-out Executor
ADAPTER
Campaign
Customer
Details
ADAPTER
Marketing
Compliance
ADAPTER
Send-out
Platform
Campaign
Model
ADAPTER
Campaign
Orchestrator
ADAPTER
Campaign
Scheduler
ADAPTER
Classified as General
Component Responsibilities
© Kindred Group plc 2021 23
Marshalls the send-
out. It delegates
send-out actions to
the relevant
components and
decides the next
step in the flow
Used a locker for
the customer
details. It stores
personalisation
data and contact
details. It also
knows how to
obtain data.
Responsible for
determining if a
customer can be
targeted for
compliance reasons.
It relates to
communications
and bonuses.
Responsible for
storing a snapshot
of the key
information needed
for a campaign
send-out.
Campaign
Send-out
Executor
Campaign
Customer
Details
Marketing
Compliance
Campaign
Send-out
Snapshot
Classified as General
Component Responsibilities
© Kindred Group plc 2021 24
It orchestrates the
campaign send-out.
It notifies all the
interested
components and
instructs them to
publish their
snapshots.
Records alarms that
are determined by
the Orchestrator.
Based on the
alarms set, it
notifies the
Orchestrator initiate
the send-out.
Responsible for
publishing the
campaign setup
snapshot to be
used during the
send-out.
Responsible storing
all the customers
that are targeted
during the
campaign send-out.
Campaign
Orchestrator
Campaign
Scheduler
Campaign
Model
Campaign
Association
Classified as General
© Kindred Group plc 2021 25
Target State – Affected Areas
Campaign
Send-out
Snapshot
ADAPTER
Campaign
Association
ADAPTER
Test Accounts
Adapter
ADAPTER
Campaign Send-out Executor
ADAPTER
Campaign
Customer
Details
ADAPTER
Marketing
Compliance
ADAPTER
Send-out
Platform
Campaign
Model
ADAPTER
Campaign
Orchestrator
ADAPTER
Campaign
Scheduler
ADAPTER
Classified as General
© Kindred Group plc 2021 26
Merged State
Send-out
Platform
Campaign Send-out Executor
Marketing Compliance
Campaign Customer
Details
Campaign Send-out
Snapshot
Campaign Send-out Executor Component
Classified as General
Shock Horror
© Kindred Group plc 2021 27
Classified as General
Why Was This Faster to Develop?
© Kindred Group plc 2021
28
Not enough time to ensure we could hit the performance
When you have component to component calls, you always introduce latency which can be
remedied, but we didn’t know if we had the time to do it and hit the deadline.
Development was faster due working with one component
As the four components worked closely together, it meant it was easier to setup locally and test
the end-to-end flow.
Limited Failure Scenarios
Component to component calls introduces reasons to fail, requiring a retry; whereas JAVA
service method call don’t. Although these can be dealt with, we didn’t have the time to address
them at the point
Our Release Process For New Components is Longer
Due to the due diligence checks that are required for new components, this would have had add
extra time, which we didn’t have, to the timelines. Not too much extra time, but every day
counted.
Not Sure Exactly the Naming for Each Component
We knew the capabilities that were needed, but we didn’t know the what each component should
be called
Classified as General
How Did We Fix It?
© Kindred Group plc 2021 29
Classified as General
© Kindred Group plc 2021
Technique 1 –Define the Capabilities
Campaign Send-out
Executor
ADAPTER
Marketing
Compliance
ADAPTER
Campaign Customer
Details
ADAPTER
Campaign Send-out
Snapshot
ADAPTER
Processing Customer
Selections
Producing Associations
Receiving Associated
Customer
Rules Execution
Checking External Opt-
outs
Checking Internal Opt-
outs
Customer Locker
Management
Requesting Comms
Details
Processing customer
selections
Snapshot Access
Local Snapshot
Management
Sending Communications
Classified as General
Technique 2 –Clear Packaging
© Kindred Group plc 2021
01 Ensured that capabilities were self-evident
02 Components were clearly package too
03 Ports and Adapters model was clearly packaged
04 Consistency across the components
Classified as General
Technique 3 – Ports & Adapters
© Kindred Group plc 2021
01 Clearly separated adapter layers – REST, messaging, etc
02 Repositories returned complete root aggregates
03 Extracted utility classes into a utils package
04 Surface the business logic in the domain package
05 Ensured adaptor layer naming doesn’t pollute domain
Classified as General
Technique 4 – Setup Topics
© Kindred Group plc 2021
01 Topics created even though we could use a JAVA service call
02 JAVA service calls instead of REST
03 Gave great flexibility when extracting
Campaign
Send-out
Snapshot
ADAPTER
Campaign
Customer
Details
ADAPTER
Marketing
Compliance
ADAPTER
Campaign
Send-out
Executor
ADAPTER
JAVA
JAVA
Classified as General
Technique 5 – No DB Table Linking
© Kindred Group plc 2021
01 Ensured no database foreign keys to other components
02 Didn’t need to create separate DB due to data short-lived
03 Repositories weren’t shared across context boundaries
Classified as General
Technique 6 – Bounded Context via Service
send-out execution local snapshot management snapshot management
LocalStorageService LocalStorageManagementService SegmentGroupExecitionService
fallbackRefreshLocalStorage findExecution
Campaign Send-out Executor
When we needed to move out the snapshot management, the
service call became a REST call but nothing on the send-out
execution side needed to change.
LocalStorageService LocalStorageManagementService SegmentGroupExecitionService
http://?
Campaign Send-out Executor Campaign Snapshot
fallbackRefreshLocalStorage
© Kindred Group plc 2021
Classified as General
Lift and Shift
© Kindred Group plc 2021 36
Marketing Compliance took two hours to extract
Campaign Snapshot took longer as it has Java service calls
Campaign Customer Details also has Java service calls
Feature switches used to transition between components
Some components did have some unwanted coupling
Classified as General
© Kindred Group plc 2021 37
Keys to Success
01 We hit our commercial goal – just about
02 Core of architecture was sound - solid foundations for the future
03 Clear package names for the capabilities – domain evident
04 Ensured no violation of context boundaries – via service layer
05 Deferred some decisions for later, meaning we could focus
Classified as General
Things We Got Wrong/Pain Points
© Kindred Group plc 2021 38
Some coupling with common code – mostly logging
Not all bounded contexts were correctly modelled
Root aggregate in Campaign Customer Details was wrong
It took a few discussions to get the feature switching correct
Classified as General
© Kindred Group plc 2021 39

More Related Content

Similar to Software Principles and Project Deadlines Don't have to be Polar Opposites.pdf

Business engagement discussion - short.pptx
Business engagement discussion - short.pptxBusiness engagement discussion - short.pptx
Business engagement discussion - short.pptx
FadelBakkar
 
Cynoteck - Salesforce Presentation - Consulting Services
Cynoteck  -  Salesforce Presentation - Consulting ServicesCynoteck  -  Salesforce Presentation - Consulting Services
Cynoteck - Salesforce Presentation - Consulting Services
Rosa Aguiar Catraio
 
Cloud webinar final
Cloud webinar finalCloud webinar final
Cloud webinar final
Ness Technologies
 
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
AgileNetwork
 
Value journal June 2020
Value journal June 2020Value journal June 2020
Value journal June 2020
Redington Value Distribution
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloud
CompatibL Technologies ltd
 
NASDAQ investor presentation for ANY Sphere 3D June 15 2015
NASDAQ investor presentation for ANY Sphere 3D June 15 2015NASDAQ investor presentation for ANY Sphere 3D June 15 2015
NASDAQ investor presentation for ANY Sphere 3D June 15 2015
Peter Bookman
 
BBC DMI Project Info for Backstage (Part 1)
BBC DMI Project Info for Backstage (Part 1)BBC DMI Project Info for Backstage (Part 1)
BBC DMI Project Info for Backstage (Part 1)
Ian Forrester
 
Webinar: Accelerating digital transformation practical insights
Webinar: Accelerating digital transformation practical insightsWebinar: Accelerating digital transformation practical insights
Webinar: Accelerating digital transformation practical insights
The Digital Insurer
 
DevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a StartupDevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems
 
How Cloud Accounting Software Enables Growth
How Cloud Accounting Software Enables GrowthHow Cloud Accounting Software Enables Growth
How Cloud Accounting Software Enables Growth
ndhsshare1
 
The Value Plus Magazine - October GITEX Issue
The Value Plus Magazine - October GITEX IssueThe Value Plus Magazine - October GITEX Issue
The Value Plus Magazine - October GITEX Issue
Redington Value Distribution
 
OpenText - Moving content to the cloud: Your way, your pace
OpenText - Moving content to the cloud: Your way, your paceOpenText - Moving content to the cloud: Your way, your pace
OpenText - Moving content to the cloud: Your way, your pace
OpenText
 
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
Cognizant
 
UniqueSoft Overview
UniqueSoft OverviewUniqueSoft Overview
UniqueSoft Overview
bmskelly
 
Arx mindbusinessportfolio
Arx mindbusinessportfolioArx mindbusinessportfolio
Arx mindbusinessportfolio
pankaj joshi
 
Idc successful cloud partners e book
Idc   successful cloud partners e bookIdc   successful cloud partners e book
Idc successful cloud partners e bookJarek Sokolnicki
 
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
QueBIT Consulting
 
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
QueBIT Consulting
 

Similar to Software Principles and Project Deadlines Don't have to be Polar Opposites.pdf (20)

Business engagement discussion - short.pptx
Business engagement discussion - short.pptxBusiness engagement discussion - short.pptx
Business engagement discussion - short.pptx
 
Cynoteck - Salesforce Presentation - Consulting Services
Cynoteck  -  Salesforce Presentation - Consulting ServicesCynoteck  -  Salesforce Presentation - Consulting Services
Cynoteck - Salesforce Presentation - Consulting Services
 
Cloud webinar final
Cloud webinar finalCloud webinar final
Cloud webinar final
 
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
ANIn Coimbatore March 2023 |How Did Feedback Loops Help To Build Better Produ...
 
Value journal June 2020
Value journal June 2020Value journal June 2020
Value journal June 2020
 
Approaching risk management with your head in the cloud
Approaching risk management with your head in the cloudApproaching risk management with your head in the cloud
Approaching risk management with your head in the cloud
 
NASDAQ investor presentation for ANY Sphere 3D June 15 2015
NASDAQ investor presentation for ANY Sphere 3D June 15 2015NASDAQ investor presentation for ANY Sphere 3D June 15 2015
NASDAQ investor presentation for ANY Sphere 3D June 15 2015
 
BBC DMI Project Info for Backstage (Part 1)
BBC DMI Project Info for Backstage (Part 1)BBC DMI Project Info for Backstage (Part 1)
BBC DMI Project Info for Backstage (Part 1)
 
digat3
digat3digat3
digat3
 
Webinar: Accelerating digital transformation practical insights
Webinar: Accelerating digital transformation practical insightsWebinar: Accelerating digital transformation practical insights
Webinar: Accelerating digital transformation practical insights
 
DevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a StartupDevOps for Enterprise Systems : Innovate like a Startup
DevOps for Enterprise Systems : Innovate like a Startup
 
How Cloud Accounting Software Enables Growth
How Cloud Accounting Software Enables GrowthHow Cloud Accounting Software Enables Growth
How Cloud Accounting Software Enables Growth
 
The Value Plus Magazine - October GITEX Issue
The Value Plus Magazine - October GITEX IssueThe Value Plus Magazine - October GITEX Issue
The Value Plus Magazine - October GITEX Issue
 
OpenText - Moving content to the cloud: Your way, your pace
OpenText - Moving content to the cloud: Your way, your paceOpenText - Moving content to the cloud: Your way, your pace
OpenText - Moving content to the cloud: Your way, your pace
 
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
Digital Engineering: Top 5 Imperatives for Communications, Media and Technolo...
 
UniqueSoft Overview
UniqueSoft OverviewUniqueSoft Overview
UniqueSoft Overview
 
Arx mindbusinessportfolio
Arx mindbusinessportfolioArx mindbusinessportfolio
Arx mindbusinessportfolio
 
Idc successful cloud partners e book
Idc   successful cloud partners e bookIdc   successful cloud partners e book
Idc successful cloud partners e book
 
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
JLG Case Study - Prescriptive Analytics & CPLEX Decision Optimization and TM1...
 
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
JLG Case Study: Prescriptive Analytics & CPLEX Decision Optimization and TM1 ...
 

Recently uploaded

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
UiPathCommunity
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
Jen Stirrup
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 

Recently uploaded (20)

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..UiPath Community Day Dubai: AI at Work..
UiPath Community Day Dubai: AI at Work..
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...The Metaverse and AI: how can decision-makers harness the Metaverse for their...
The Metaverse and AI: how can decision-makers harness the Metaverse for their...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 

Software Principles and Project Deadlines Don't have to be Polar Opposites.pdf

  • 1. Software Principles and Project Deadlines Don’t Have to be Polar Opposites By Craig Saunders
  • 2. Classified as General Legal © Kindred Group plc 2021 2
  • 3. Classified as General Premise © Kindred Group plc 2021 3 “ As Software Engineer’s we pride ourselves to build high quality software using the best industry practises and principles. But what happens when you’re asked to deliver a project with impossible timescales where a quick hacky solution is all that time allows. This presentation talks through such a scenario where and how we managed to achieve the right solution but also met the business deadline. In addition it talks briefly about the key principles we followed to achieve this feet.
  • 4. Classified as General Bio - Life © Kindred Group plc 2021 4 Software Engineer with 26 years experience Started writing C with Vi, moving onto C++ and Java Worked with Microservices for about 6 years Worked predominately with distributed systems Huge tech advocate – love playing with the toys
  • 5. Classified as General Bio – At Kindred © Kindred Group plc 2021 5 Job title is a Line Lead, but that’s not all what I do Work in the strategic side of software development Work closely with Architects, Stakeholders and POs Help steer and mentor the development team(s) I’ve sometimes been called the octopus – many hats
  • 6. Classified as General Bio Cont… © Kindred Group plc 2021 Ultimately, I’m a geek who likes playing with the toys!!
  • 7. Classified as General Who is Kindred? © Kindred Group plc 2021 7 A tech company that operates in the online gambling space
  • 8. Classified as General © Kindred Group plc 2021 8 Kindred Stats and Facts 01 Broke up the monolith in 2010 Kindred were an early adopter to Microservices and are now in position of refactoring their microservice architecture. We also make use a lot of event-driven architecture. 02 310, and counting, microservices in production We currently have 310 microservices which has tripled in the last 2 to 3 years. With the drive to challenge with the best-in-class platform, we our ability scale with smaller purposeful services. 03 Strive for Continuous Delivery – 11k releases per year Analysis has shown that the more releases we do the less system outages we see. With this we strive, where regulation permits, frequent releasing on smaller pieces of development. We have a zero-downtime policy too – only in exceptional cases which must be justified and approved. 04 Operate in a strict compliance and regulated industry Due to the nature of the industry, we operate in, we are heavily regulated. 05 Deploy software onto Kubernetes We are cloud agnostic and see Kubernetes as a key strategy to be able to deploy into new markets at speed and be able to scale to needs of that market.
  • 9. Classified as General © Kindred Group plc 2021 9 Kindred Stats and Facts 06 Team responsibility for monitoring and observability Each team is responsible for the health, monitoring of its components – you must look after your own babies. There are guidelines, but the team decides how they want to be alerted and handle production incidents. 07 Team ownership for development and Agile process Each team is responsible for how they deliver, provided it can align at the macro- level. Any Agile process can be used but is typically SCRUM or Kanban. 08 Upwards of 1.8 million active customers We have 1.8 active customer – determined over a quarterly period. During the last World Cup, we had 1 million plus customer in one month. 09 Average of 45M+ wallet transactions per day We see peaks of 60+ million wallet transactions per day, which is now double what we achieved as an all-time-high during the World Cup of 2018. The average is 45M+. 10 Send-out capability to target 3M+customer per day Depending on what events are happening, our tech capability allows Marketing to target upwards of 3M+ customers a day (especially around Advent).
  • 10. Classified as General Set the Scene © Kindred Group plc 2021 10
  • 11. Classified as General Sound Familiar? © Kindred Group plc 2021 11 “ I know this is a crazy deadline but what can I do. I’m told failure is not an option. - Team Lead “ We have to hit this deadline. Anything else is a nice to have. - Product Owner “ We’ve a lot of money riding on this product launch, we can’t be late. - Business Stakeholder “ We’ve already paid for the Marketing advertisement. - Marketing Manager
  • 12. Classified as General Time to Cry? The amount of tech debt this will incur will hurt us in the future We haven’t even been able to remove the debt since the last hack job!! How’s this going to be possible? Will we ever have time to develop software properly
  • 13. Classified as General How Do We Get Here? © Kindred Group plc 2021 13 At times it’s like we are diametrically opposed
  • 14. Classified as General Blame Game? No © Kindred Group plc 2021 14 It’s not a blame game, we’re both in it to succeed
  • 15. Classified as General Let’s Get Down to the Tech © Kindred Group plc 2021 15
  • 16. Classified as General © Kindred Group plc 2021 16 Domain Driven Design 01 Ubiquitous Language A practise of building up a common, rigorous language between developers, users and stakeholders to ensure we are all talking on a way that we all understand. 02 Bounded Contexts A defined part of software where particular terms, definitions and rules apply n a consistent way. 03 Maintaining Model Integrity Defining how different bounded contexts interact with each. E.g. conformist, shard kernel, open host, anti-corruption layer, etc.. 04 Isolating the Domain – Layer Architecture Ensuring the business domain layer is separated supporting layers to surface the business concepts, and business rules. 05 Continuous Integration Continuous/constant communication between the team members –most notable t by hammering out the ubiquitous language, In addition continuous testing of the bounded contexts and how the interact with other bound contexts. .
  • 17. Classified as General © Kindred Group plc 2021 17 Clean Architecture 01 SOLID Principles Six key principles to help guide development in the right way. E.g., Single Responsibility, Open- closed Principle, Liskov’s Rule of Substitution, etc. 02 Component Principles – and extension of SOLID Principles which are similar to SOLID but at the component boundary. Such examples are common closure principle, common reuse principle, reuse/release equivalence principle, etc 03 Setting Boundaries Boundaries are lines that separate software elements. They separate things that matter from things that don’t, i.e., high-level components from low-level components. 04 Separating the Layers – Port & Adapters Layers are concentric and represent how fundamental (or high-level) components are. At the core, we have the high-level policies, i.e., stable and abstract components encapsulating our business rules. On the outer ring, we have the details, for example, unstable and concrete GUI’s.. 05 Clean Code Clean code helps toe surface the elements of the system so that everyone can understand the wood from the trees.
  • 18. Classified as General So What Do We Do About It? © Kindred Group plc 2021 18 Let’s Dive In
  • 19. Classified as General © Kindred Group plc 2021 19 Current System Comms Gateway ADAPTER Campaign System ADAPTER Unica Adapter ADAPTER Audience Platform Send-out Platform Comms Platform CustomerSelectionEvent The customer selection event is fired every time a customer is being targeted as part of the campaign send-out. CommunicationsGatewayMarketingPublication The event that is fired to instruct the communications platform to send comms to a customer.
  • 20. Classified as General © Kindred Group plc 2021 20 Current System – Focus Area Campaign System ADAPTER Send-out Platform
  • 21. Classified as General This Wasn’t Going to Work © Kindred Group plc 2021 21 Campaign System ADAPTER The component had become a micro-monolith Needed to support real-time send-outs, which it didn’t We had numerous performance issues Development took longer due to huge tech debt Wasn’t compatible with our Kubernetes strategy
  • 22. Classified as General © Kindred Group plc 2021 22 Target State Campaign Send-out Snapshot ADAPTER Campaign Association ADAPTER Test Accounts Adapter ADAPTER Campaign Send-out Executor ADAPTER Campaign Customer Details ADAPTER Marketing Compliance ADAPTER Send-out Platform Campaign Model ADAPTER Campaign Orchestrator ADAPTER Campaign Scheduler ADAPTER
  • 23. Classified as General Component Responsibilities © Kindred Group plc 2021 23 Marshalls the send- out. It delegates send-out actions to the relevant components and decides the next step in the flow Used a locker for the customer details. It stores personalisation data and contact details. It also knows how to obtain data. Responsible for determining if a customer can be targeted for compliance reasons. It relates to communications and bonuses. Responsible for storing a snapshot of the key information needed for a campaign send-out. Campaign Send-out Executor Campaign Customer Details Marketing Compliance Campaign Send-out Snapshot
  • 24. Classified as General Component Responsibilities © Kindred Group plc 2021 24 It orchestrates the campaign send-out. It notifies all the interested components and instructs them to publish their snapshots. Records alarms that are determined by the Orchestrator. Based on the alarms set, it notifies the Orchestrator initiate the send-out. Responsible for publishing the campaign setup snapshot to be used during the send-out. Responsible storing all the customers that are targeted during the campaign send-out. Campaign Orchestrator Campaign Scheduler Campaign Model Campaign Association
  • 25. Classified as General © Kindred Group plc 2021 25 Target State – Affected Areas Campaign Send-out Snapshot ADAPTER Campaign Association ADAPTER Test Accounts Adapter ADAPTER Campaign Send-out Executor ADAPTER Campaign Customer Details ADAPTER Marketing Compliance ADAPTER Send-out Platform Campaign Model ADAPTER Campaign Orchestrator ADAPTER Campaign Scheduler ADAPTER
  • 26. Classified as General © Kindred Group plc 2021 26 Merged State Send-out Platform Campaign Send-out Executor Marketing Compliance Campaign Customer Details Campaign Send-out Snapshot Campaign Send-out Executor Component
  • 27. Classified as General Shock Horror © Kindred Group plc 2021 27
  • 28. Classified as General Why Was This Faster to Develop? © Kindred Group plc 2021 28 Not enough time to ensure we could hit the performance When you have component to component calls, you always introduce latency which can be remedied, but we didn’t know if we had the time to do it and hit the deadline. Development was faster due working with one component As the four components worked closely together, it meant it was easier to setup locally and test the end-to-end flow. Limited Failure Scenarios Component to component calls introduces reasons to fail, requiring a retry; whereas JAVA service method call don’t. Although these can be dealt with, we didn’t have the time to address them at the point Our Release Process For New Components is Longer Due to the due diligence checks that are required for new components, this would have had add extra time, which we didn’t have, to the timelines. Not too much extra time, but every day counted. Not Sure Exactly the Naming for Each Component We knew the capabilities that were needed, but we didn’t know the what each component should be called
  • 29. Classified as General How Did We Fix It? © Kindred Group plc 2021 29
  • 30. Classified as General © Kindred Group plc 2021 Technique 1 –Define the Capabilities Campaign Send-out Executor ADAPTER Marketing Compliance ADAPTER Campaign Customer Details ADAPTER Campaign Send-out Snapshot ADAPTER Processing Customer Selections Producing Associations Receiving Associated Customer Rules Execution Checking External Opt- outs Checking Internal Opt- outs Customer Locker Management Requesting Comms Details Processing customer selections Snapshot Access Local Snapshot Management Sending Communications
  • 31. Classified as General Technique 2 –Clear Packaging © Kindred Group plc 2021 01 Ensured that capabilities were self-evident 02 Components were clearly package too 03 Ports and Adapters model was clearly packaged 04 Consistency across the components
  • 32. Classified as General Technique 3 – Ports & Adapters © Kindred Group plc 2021 01 Clearly separated adapter layers – REST, messaging, etc 02 Repositories returned complete root aggregates 03 Extracted utility classes into a utils package 04 Surface the business logic in the domain package 05 Ensured adaptor layer naming doesn’t pollute domain
  • 33. Classified as General Technique 4 – Setup Topics © Kindred Group plc 2021 01 Topics created even though we could use a JAVA service call 02 JAVA service calls instead of REST 03 Gave great flexibility when extracting Campaign Send-out Snapshot ADAPTER Campaign Customer Details ADAPTER Marketing Compliance ADAPTER Campaign Send-out Executor ADAPTER JAVA JAVA
  • 34. Classified as General Technique 5 – No DB Table Linking © Kindred Group plc 2021 01 Ensured no database foreign keys to other components 02 Didn’t need to create separate DB due to data short-lived 03 Repositories weren’t shared across context boundaries
  • 35. Classified as General Technique 6 – Bounded Context via Service send-out execution local snapshot management snapshot management LocalStorageService LocalStorageManagementService SegmentGroupExecitionService fallbackRefreshLocalStorage findExecution Campaign Send-out Executor When we needed to move out the snapshot management, the service call became a REST call but nothing on the send-out execution side needed to change. LocalStorageService LocalStorageManagementService SegmentGroupExecitionService http://? Campaign Send-out Executor Campaign Snapshot fallbackRefreshLocalStorage © Kindred Group plc 2021
  • 36. Classified as General Lift and Shift © Kindred Group plc 2021 36 Marketing Compliance took two hours to extract Campaign Snapshot took longer as it has Java service calls Campaign Customer Details also has Java service calls Feature switches used to transition between components Some components did have some unwanted coupling
  • 37. Classified as General © Kindred Group plc 2021 37 Keys to Success 01 We hit our commercial goal – just about 02 Core of architecture was sound - solid foundations for the future 03 Clear package names for the capabilities – domain evident 04 Ensured no violation of context boundaries – via service layer 05 Deferred some decisions for later, meaning we could focus
  • 38. Classified as General Things We Got Wrong/Pain Points © Kindred Group plc 2021 38 Some coupling with common code – mostly logging Not all bounded contexts were correctly modelled Root aggregate in Campaign Customer Details was wrong It took a few discussions to get the feature switching correct
  • 39. Classified as General © Kindred Group plc 2021 39