SlideShare a Scribd company logo
1 of 30
WHATs & WHYs
What you need and why you need it!
Harun Yardımcı
Software Architect @ eBay
www.linkedin.com/in/harunyardimci/
Notes on Notes
• Slides are unordered
• There are always alternative tools. Concentrate on
the idea!
• Not talking about technology
HELP!!
Someone please make this presentation beautiful
Release Management
• Release Notes
You have to know exactly what is deployed and when it is
deployed.
There is no exception.
• Release Manager
You need this title to give the responsibility. So you can
blame someone.
Can’t hire a new guy, just hand it to smartest one.
• Project Manager
Usually they will tell you what needs to be deployed.
Code Review
• How do you know you write a good quality code?
Share your code with your colleagues, they will enjoy to
embarrass you
• Tell others that their code smells
So you have a chance to get your revenge
• Standards and best practices
There is always a better way and probably someone did it
Network Bandwidth
• Measure the network bandwidth on each machine.
You will need to know it just before pulling hairs out of
your head when your application is not responding.
o volker gropp
o Iptraf
There are many others. Choose one and go.
MHA for MySQL
• Master High Availability Manager and tools for
MySQL
Tools are faster than you! They don’t get tired and don’t
complains.
There is nothing to loose since it works
when your master DB is crashed
Load Balancer
• Hardware Balancer
o Citrix NetScaler
o F5
More features and better scalability. Costs you more.
• Software Balancer
o HAProxy
Software load balancers seems cheaper and they perform quite
well but you need a good hardware to run it!
Online Schema Change
Who wants to shutdown the site and alter a table for
an hour, then wait for the slaves to catch up?
No one! Not any more.
o pt-online-schema-change
o oak-online-alter-table
Openark and Percona has many more useful tools.
Use them! Tools are they to make your life easier.
Archiving
• Move old and expired data to archive
o Small dataset and index = $$ CASH $$
o Faster response, low latency = $$ CASH $$
o Maintainable database = $$ CASH $$
o Faster dumps and restores = $$ CASH $$
Don’t forget to write scripts to get it back when
needed!
No Database Dependency
• NO TRIGGERS
• NO STORED PROCEDURES
• NO VIEWS
o Nobody will know the business logic
o Impossible to learn how a piece of code is functioning
o Not easy to maintain
Forget immediately what your old-school database
teacher told you in the college.
Don’t use them.
CACHING
• Cache everything
• More importantly evict everything
if you can’t evict do not cache
• Web Developers Toolbox:
o Varnish, Squid, etc.
o Memcached, Redis, Couchbase, etc.
o Hazelcast, Terracotta, Coherence, EhCache, etc.
CPU cache, disk buffer, page cache, browser cache,
DNS cache, Proxy cache, HTTP Etag, Expire Headers, ….
Server Configuration
Management
• Declare once execute many times
Write a manifesto file as an configuration and define the
standards. Each servers configuration will be identical.
o Puppet
o Chef
Easy and fast to configure a new server
Very fast to change any settings
Identical configurations
Central Control
More holidays for system admins
LOGGING
• Don’t generate logs if you don’t read them.
At least you can save I/O on disks.
• Centralized logs enables you to search every action of a
component (user, product, sale, etc)
Writing a proper log in each application, makes you enable
to search for actions of userId:101.
o Logstash
o Graylog2
Your boss will love you as long as you can read the past!
Capped collection, Elastic Search, Gelfino, Grok, Kibana,
etc.
Auto Deployment
This is 21st Century! Manual deployment is
unacceptable.
Don’t wait anyone to ask you to do it.
Use Jenkins, Maven, Ant, Bash Script, Fabric,
Capistrano, Python, Perl or whatever you can.
Still reading this?
Don’t!
Go and write a script.
Now!
Test Environments
• Separated Test Environments
• Create Test Data
• Test more than once:
o Staging
Have more than one test environment
Testing affects to number of bugs dramatically.
Test Data
• Every application has to create its own test data.
o Your application, your test data. You know better and It is your
responsibility.
• Easy to test it on every environment
• Reduces dependencies
• No need to database syncs to test DBs
Data Sanitizing
• Some users have same passwords for Facebook, Gmail and so
• Users emails, bank accounts, what they bought, what they like
are valuable data
Can be sold to third parties or can be used to threaten
someone
• Users data is personal and it should be protected
Some employees are very curious about others, specially about
their friends.
Block DB Access, Authentication, Auditing, Data Encryption
There is no “Freedom of Information Law” on your users data
Development Environments
• Own Machines (Leads to “but it works on my machine”
problem)
• Virtual Machines
• Dedicated Servers
Give them options and let them choose one they feel
comfortable.
Should be Simple and Fast!
Agile Methodology
Developers loves it!
• Basic Idea:
o Small, well defined tasks
o Solve problems and unclear points immediately
o Be a communication bridge
o Remove disturbance
o Plan ahead
o Measure performance
o Learn the limits
Scrum, Kanban, Scrumban, XP, Kaizen, Six Sigma, etc..
Monitoring
• Monitor everything
load, disk, network, memory, db response, cache response, data
size, counts, 404s, 500s, every little tiny bit can be important.
• Define milestones
• Watch after deployments
• Write Health Check services, checking the port not
enough
• Analyze Trends
Forecast the load on next Christmas, campaign, holiday
Source Control
• Use GIT
If you think that you don’t need it, then most probably
you are doing something wrong.
GitHub, Gitolite, Gitosis, Gitstash, Gitlist, Gitweb, etc..
Define Branching Model
Authenticate and Authorize the Access
Project Managers
• You need someone who can move some excel
boxes from one to another cell
• Sometimes some cells needs to be merged
together
Those excel cells are project plan, execution plan,
priority of tasks, risk analysis, etc.
They typically have extensive
background in development
I wish so!
Asynchronize
• Don’t keep users waiting
• Add some actions to a queue
• Reduce Race-Conditions
Everything will be okay!
In time
Enable / Disable
• Flexibility
• Partially Maintenance
• Less Downtime
• Decoupled features
Enable / Disable messages for a time
while payment is working
or any feature..
Budget For Teams
• Go for lunch, take them to cinema, do some team
building activities
They will never forget
Loyalty will increase
Know each other better
Increase communication between members
• Have a half day off once a month to:
Do something fun together
Get relaxed
Listen their problems
They need to talk each other and
to do something together!
Legacy Codes and Systems
• Laugh at them
• Make fun of them
• Delete them
• Remove them
• Burn them
Be courage about designing and creating them from
scratch.
They are not so big things as you think!
Meetings
• Don’t have meetings
• If you really need it
o Stand-up meetings (Less time)
o Invite very few people
o Have someone to take notes
o Define time box (30 min. max)
• Need more? Break it into small pieces
o Share outcome and result of the meeting
Other Headaches
• Cross Functional Teams Good!
• Outsourcing Generally Bad!
• Centralization / Decentralization
Varies case by case. Just think about it before you
start.
• Details and early optimizations blocks you to start
something
• People need uninterrupted time to finish their tasks
• Context Over Consistency
What makes sense here may not makes sense there*
• Spend some time with other departments
* Rework
Thanks!
• Have a question?
Harun.yardimci@gmail.com
hyardimci@ebay.com
• Liked it?
o Use it, share it, show it to your boss
• Didn’t like it?
o Pretend that you liked it and help me to make it better

More Related Content

What's hot

Make Life Suck Less (Building Scalable Systems)
Make Life Suck Less (Building Scalable Systems)Make Life Suck Less (Building Scalable Systems)
Make Life Suck Less (Building Scalable Systems)guest0f8e278
 
Scrum and-xp-from-the-trenches 07 handle multiple scrum teams
Scrum and-xp-from-the-trenches 07 handle multiple scrum teamsScrum and-xp-from-the-trenches 07 handle multiple scrum teams
Scrum and-xp-from-the-trenches 07 handle multiple scrum teamsHossam Hassan
 
DevOps for the sysadmin
DevOps for the sysadminDevOps for the sysadmin
DevOps for the sysadminRobert Nelson
 
Usability Testing: Targeting Mobile Devices
Usability Testing: Targeting Mobile DevicesUsability Testing: Targeting Mobile Devices
Usability Testing: Targeting Mobile DevicesWayne Pau
 
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)Neil Studd
 
Easy & Effective Usability Testing at CodeMash 2012
Easy & Effective Usability Testing at CodeMash 2012Easy & Effective Usability Testing at CodeMash 2012
Easy & Effective Usability Testing at CodeMash 2012Carol Smith
 
Scrum and-xp-from-the-trenches 04 sprint demo & retrospective
Scrum and-xp-from-the-trenches 04 sprint demo & retrospectiveScrum and-xp-from-the-trenches 04 sprint demo & retrospective
Scrum and-xp-from-the-trenches 04 sprint demo & retrospectiveHossam Hassan
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpHossam Hassan
 
Scrum and-xp-from-the-trenches 02 sprint planning
Scrum and-xp-from-the-trenches 02 sprint planningScrum and-xp-from-the-trenches 02 sprint planning
Scrum and-xp-from-the-trenches 02 sprint planningHossam Hassan
 
Scrum and-xp-from-the-trenches 06 testing
Scrum and-xp-from-the-trenches 06 testingScrum and-xp-from-the-trenches 06 testing
Scrum and-xp-from-the-trenches 06 testingHossam Hassan
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self ManagementThomas Mentzel
 
An Agile Approach to Machine Learning
An Agile Approach to Machine LearningAn Agile Approach to Machine Learning
An Agile Approach to Machine LearningRandy Shoup
 
Parkinson's Disease in the workplace
Parkinson's Disease in the workplaceParkinson's Disease in the workplace
Parkinson's Disease in the workplaceBill Hannigan
 
JIRA 101 - Over(our)head No Longer!
JIRA 101 - Over(our)head No Longer!JIRA 101 - Over(our)head No Longer!
JIRA 101 - Over(our)head No Longer!Frank Caron
 
Scrum and-xp-from-the-trenches 01 intro & backlog
Scrum and-xp-from-the-trenches 01 intro & backlogScrum and-xp-from-the-trenches 01 intro & backlog
Scrum and-xp-from-the-trenches 01 intro & backlogHossam Hassan
 
The Ultimate Metric
The Ultimate MetricThe Ultimate Metric
The Ultimate MetricArty Starr
 
Denver ACE March Remote Transition Tips
Denver ACE March Remote Transition TipsDenver ACE March Remote Transition Tips
Denver ACE March Remote Transition Tipsdenveraug
 

What's hot (19)

Make Life Suck Less (Building Scalable Systems)
Make Life Suck Less (Building Scalable Systems)Make Life Suck Less (Building Scalable Systems)
Make Life Suck Less (Building Scalable Systems)
 
Scrum and-xp-from-the-trenches 07 handle multiple scrum teams
Scrum and-xp-from-the-trenches 07 handle multiple scrum teamsScrum and-xp-from-the-trenches 07 handle multiple scrum teams
Scrum and-xp-from-the-trenches 07 handle multiple scrum teams
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
DevOps for the sysadmin
DevOps for the sysadminDevOps for the sysadmin
DevOps for the sysadmin
 
Usability Testing: Targeting Mobile Devices
Usability Testing: Targeting Mobile DevicesUsability Testing: Targeting Mobile Devices
Usability Testing: Targeting Mobile Devices
 
Let's get along
Let's get alongLet's get along
Let's get along
 
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)
Testing in the Dark: Lessons in Cross-Site Communication (MEWT 2015)
 
Easy & Effective Usability Testing at CodeMash 2012
Easy & Effective Usability Testing at CodeMash 2012Easy & Effective Usability Testing at CodeMash 2012
Easy & Effective Usability Testing at CodeMash 2012
 
Scrum and-xp-from-the-trenches 04 sprint demo & retrospective
Scrum and-xp-from-the-trenches 04 sprint demo & retrospectiveScrum and-xp-from-the-trenches 04 sprint demo & retrospective
Scrum and-xp-from-the-trenches 04 sprint demo & retrospective
 
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xpScrum and-xp-from-the-trenches 05 release planning & scrum with xp
Scrum and-xp-from-the-trenches 05 release planning & scrum with xp
 
Scrum and-xp-from-the-trenches 02 sprint planning
Scrum and-xp-from-the-trenches 02 sprint planningScrum and-xp-from-the-trenches 02 sprint planning
Scrum and-xp-from-the-trenches 02 sprint planning
 
Scrum and-xp-from-the-trenches 06 testing
Scrum and-xp-from-the-trenches 06 testingScrum and-xp-from-the-trenches 06 testing
Scrum and-xp-from-the-trenches 06 testing
 
Productivity- and Self Management
Productivity- and Self ManagementProductivity- and Self Management
Productivity- and Self Management
 
An Agile Approach to Machine Learning
An Agile Approach to Machine LearningAn Agile Approach to Machine Learning
An Agile Approach to Machine Learning
 
Parkinson's Disease in the workplace
Parkinson's Disease in the workplaceParkinson's Disease in the workplace
Parkinson's Disease in the workplace
 
JIRA 101 - Over(our)head No Longer!
JIRA 101 - Over(our)head No Longer!JIRA 101 - Over(our)head No Longer!
JIRA 101 - Over(our)head No Longer!
 
Scrum and-xp-from-the-trenches 01 intro & backlog
Scrum and-xp-from-the-trenches 01 intro & backlogScrum and-xp-from-the-trenches 01 intro & backlog
Scrum and-xp-from-the-trenches 01 intro & backlog
 
The Ultimate Metric
The Ultimate MetricThe Ultimate Metric
The Ultimate Metric
 
Denver ACE March Remote Transition Tips
Denver ACE March Remote Transition TipsDenver ACE March Remote Transition Tips
Denver ACE March Remote Transition Tips
 

Similar to Software Development Whats & Whys

Django production
Django productionDjango production
Django productionpythonsd
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Derek Jacoby
 
Unbreaking Your Django Application
Unbreaking Your Django ApplicationUnbreaking Your Django Application
Unbreaking Your Django ApplicationOSCON Byrum
 
Scaling apps for the big time
Scaling apps for the big timeScaling apps for the big time
Scaling apps for the big timeproitconsult
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP120bi
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent CerveauTheFamily
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair ProgrammingSteven Smith
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven developmentEinar Ingebrigtsen
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)Julien SIMON
 
Cerebro general overiew eng
Cerebro general overiew engCerebro general overiew eng
Cerebro general overiew engCineSoft
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&processSheSaysCREATIVE
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and OptimizationsNick Manning
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and OptimizationsNick Manning
 
SQL Server High Availability and DR - Too Many Choices!
SQL Server High Availability and DR - Too Many Choices!SQL Server High Availability and DR - Too Many Choices!
SQL Server High Availability and DR - Too Many Choices!Mike Walsh
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with djangoYann Malet
 
Big Data at a Gaming Company: Spil Games
Big Data at a Gaming Company: Spil GamesBig Data at a Gaming Company: Spil Games
Big Data at a Gaming Company: Spil GamesRob Winters
 

Similar to Software Development Whats & Whys (20)

Django production
Django productionDjango production
Django production
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
Unbreaking Your Django Application
Unbreaking Your Django ApplicationUnbreaking Your Django Application
Unbreaking Your Django Application
 
Scaling apps for the big time
Scaling apps for the big timeScaling apps for the big time
Scaling apps for the big time
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
 
Introducing Pair Programming
Introducing Pair ProgrammingIntroducing Pair Programming
Introducing Pair Programming
 
Driving application development through behavior driven development
Driving application development through behavior driven developmentDriving application development through behavior driven development
Driving application development through behavior driven development
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)
 
Traits of a Good Engineer
Traits of a Good EngineerTraits of a Good Engineer
Traits of a Good Engineer
 
Binary crosswords
Binary crosswordsBinary crosswords
Binary crosswords
 
Cerebro general overiew eng
Cerebro general overiew engCerebro general overiew eng
Cerebro general overiew eng
 
05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process05 DIGI CREATIVE people&process
05 DIGI CREATIVE people&process
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
 
Running Neo4j in Production: Tips, Tricks and Optimizations
Running Neo4j in Production:  Tips, Tricks and OptimizationsRunning Neo4j in Production:  Tips, Tricks and Optimizations
Running Neo4j in Production: Tips, Tricks and Optimizations
 
Bug Hunting Safari
Bug Hunting SafariBug Hunting Safari
Bug Hunting Safari
 
SQL Server High Availability and DR - Too Many Choices!
SQL Server High Availability and DR - Too Many Choices!SQL Server High Availability and DR - Too Many Choices!
SQL Server High Availability and DR - Too Many Choices!
 
Building a custom cms with django
Building a custom cms with djangoBuilding a custom cms with django
Building a custom cms with django
 
Big Data at a Gaming Company: Spil Games
Big Data at a Gaming Company: Spil GamesBig Data at a Gaming Company: Spil Games
Big Data at a Gaming Company: Spil Games
 

More from Harun Yardımcı

Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016
Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016
Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016Harun Yardımcı
 
"It Works On My Machine" Problem
"It Works On My Machine" Problem"It Works On My Machine" Problem
"It Works On My Machine" ProblemHarun Yardımcı
 
What you don't learn in the school
What you don't learn in the schoolWhat you don't learn in the school
What you don't learn in the schoolHarun Yardımcı
 
Scalability at Gittigidiyor
Scalability at GittigidiyorScalability at Gittigidiyor
Scalability at GittigidiyorHarun Yardımcı
 
Gittigidiyor.com'da Acik Kaynak Uygulamalar
Gittigidiyor.com'da Acik Kaynak UygulamalarGittigidiyor.com'da Acik Kaynak Uygulamalar
Gittigidiyor.com'da Acik Kaynak UygulamalarHarun Yardımcı
 

More from Harun Yardımcı (10)

Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016
Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016
Webrazzi Online: Code - GittiGidiyor’a Teknik Bakış 2016
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
"It Works On My Machine" Problem
"It Works On My Machine" Problem"It Works On My Machine" Problem
"It Works On My Machine" Problem
 
What you don't learn in the school
What you don't learn in the schoolWhat you don't learn in the school
What you don't learn in the school
 
CFEX 2014 - DAU
CFEX 2014 - DAUCFEX 2014 - DAU
CFEX 2014 - DAU
 
Scalability at Gittigidiyor
Scalability at GittigidiyorScalability at Gittigidiyor
Scalability at Gittigidiyor
 
Introduction to Mongodb
Introduction to MongodbIntroduction to Mongodb
Introduction to Mongodb
 
Gittigidiyor.com'da Acik Kaynak Uygulamalar
Gittigidiyor.com'da Acik Kaynak UygulamalarGittigidiyor.com'da Acik Kaynak Uygulamalar
Gittigidiyor.com'da Acik Kaynak Uygulamalar
 
Git Branching Model
Git Branching ModelGit Branching Model
Git Branching Model
 
Mongodb workshop
Mongodb workshopMongodb workshop
Mongodb workshop
 

Recently uploaded

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Recently uploaded (20)

Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

Software Development Whats & Whys

  • 1. WHATs & WHYs What you need and why you need it! Harun Yardımcı Software Architect @ eBay www.linkedin.com/in/harunyardimci/
  • 2. Notes on Notes • Slides are unordered • There are always alternative tools. Concentrate on the idea! • Not talking about technology HELP!! Someone please make this presentation beautiful
  • 3. Release Management • Release Notes You have to know exactly what is deployed and when it is deployed. There is no exception. • Release Manager You need this title to give the responsibility. So you can blame someone. Can’t hire a new guy, just hand it to smartest one. • Project Manager Usually they will tell you what needs to be deployed.
  • 4. Code Review • How do you know you write a good quality code? Share your code with your colleagues, they will enjoy to embarrass you • Tell others that their code smells So you have a chance to get your revenge • Standards and best practices There is always a better way and probably someone did it
  • 5. Network Bandwidth • Measure the network bandwidth on each machine. You will need to know it just before pulling hairs out of your head when your application is not responding. o volker gropp o Iptraf There are many others. Choose one and go.
  • 6. MHA for MySQL • Master High Availability Manager and tools for MySQL Tools are faster than you! They don’t get tired and don’t complains. There is nothing to loose since it works when your master DB is crashed
  • 7. Load Balancer • Hardware Balancer o Citrix NetScaler o F5 More features and better scalability. Costs you more. • Software Balancer o HAProxy Software load balancers seems cheaper and they perform quite well but you need a good hardware to run it!
  • 8. Online Schema Change Who wants to shutdown the site and alter a table for an hour, then wait for the slaves to catch up? No one! Not any more. o pt-online-schema-change o oak-online-alter-table Openark and Percona has many more useful tools. Use them! Tools are they to make your life easier.
  • 9. Archiving • Move old and expired data to archive o Small dataset and index = $$ CASH $$ o Faster response, low latency = $$ CASH $$ o Maintainable database = $$ CASH $$ o Faster dumps and restores = $$ CASH $$ Don’t forget to write scripts to get it back when needed!
  • 10. No Database Dependency • NO TRIGGERS • NO STORED PROCEDURES • NO VIEWS o Nobody will know the business logic o Impossible to learn how a piece of code is functioning o Not easy to maintain Forget immediately what your old-school database teacher told you in the college. Don’t use them.
  • 11. CACHING • Cache everything • More importantly evict everything if you can’t evict do not cache • Web Developers Toolbox: o Varnish, Squid, etc. o Memcached, Redis, Couchbase, etc. o Hazelcast, Terracotta, Coherence, EhCache, etc. CPU cache, disk buffer, page cache, browser cache, DNS cache, Proxy cache, HTTP Etag, Expire Headers, ….
  • 12. Server Configuration Management • Declare once execute many times Write a manifesto file as an configuration and define the standards. Each servers configuration will be identical. o Puppet o Chef Easy and fast to configure a new server Very fast to change any settings Identical configurations Central Control More holidays for system admins
  • 13. LOGGING • Don’t generate logs if you don’t read them. At least you can save I/O on disks. • Centralized logs enables you to search every action of a component (user, product, sale, etc) Writing a proper log in each application, makes you enable to search for actions of userId:101. o Logstash o Graylog2 Your boss will love you as long as you can read the past! Capped collection, Elastic Search, Gelfino, Grok, Kibana, etc.
  • 14. Auto Deployment This is 21st Century! Manual deployment is unacceptable. Don’t wait anyone to ask you to do it. Use Jenkins, Maven, Ant, Bash Script, Fabric, Capistrano, Python, Perl or whatever you can.
  • 15. Still reading this? Don’t! Go and write a script. Now!
  • 16. Test Environments • Separated Test Environments • Create Test Data • Test more than once: o Staging Have more than one test environment Testing affects to number of bugs dramatically.
  • 17. Test Data • Every application has to create its own test data. o Your application, your test data. You know better and It is your responsibility. • Easy to test it on every environment • Reduces dependencies • No need to database syncs to test DBs
  • 18. Data Sanitizing • Some users have same passwords for Facebook, Gmail and so • Users emails, bank accounts, what they bought, what they like are valuable data Can be sold to third parties or can be used to threaten someone • Users data is personal and it should be protected Some employees are very curious about others, specially about their friends. Block DB Access, Authentication, Auditing, Data Encryption There is no “Freedom of Information Law” on your users data
  • 19. Development Environments • Own Machines (Leads to “but it works on my machine” problem) • Virtual Machines • Dedicated Servers Give them options and let them choose one they feel comfortable. Should be Simple and Fast!
  • 20. Agile Methodology Developers loves it! • Basic Idea: o Small, well defined tasks o Solve problems and unclear points immediately o Be a communication bridge o Remove disturbance o Plan ahead o Measure performance o Learn the limits Scrum, Kanban, Scrumban, XP, Kaizen, Six Sigma, etc..
  • 21. Monitoring • Monitor everything load, disk, network, memory, db response, cache response, data size, counts, 404s, 500s, every little tiny bit can be important. • Define milestones • Watch after deployments • Write Health Check services, checking the port not enough • Analyze Trends Forecast the load on next Christmas, campaign, holiday
  • 22. Source Control • Use GIT If you think that you don’t need it, then most probably you are doing something wrong. GitHub, Gitolite, Gitosis, Gitstash, Gitlist, Gitweb, etc.. Define Branching Model Authenticate and Authorize the Access
  • 23. Project Managers • You need someone who can move some excel boxes from one to another cell • Sometimes some cells needs to be merged together Those excel cells are project plan, execution plan, priority of tasks, risk analysis, etc. They typically have extensive background in development I wish so!
  • 24. Asynchronize • Don’t keep users waiting • Add some actions to a queue • Reduce Race-Conditions Everything will be okay! In time
  • 25. Enable / Disable • Flexibility • Partially Maintenance • Less Downtime • Decoupled features Enable / Disable messages for a time while payment is working or any feature..
  • 26. Budget For Teams • Go for lunch, take them to cinema, do some team building activities They will never forget Loyalty will increase Know each other better Increase communication between members • Have a half day off once a month to: Do something fun together Get relaxed Listen their problems They need to talk each other and to do something together!
  • 27. Legacy Codes and Systems • Laugh at them • Make fun of them • Delete them • Remove them • Burn them Be courage about designing and creating them from scratch. They are not so big things as you think!
  • 28. Meetings • Don’t have meetings • If you really need it o Stand-up meetings (Less time) o Invite very few people o Have someone to take notes o Define time box (30 min. max) • Need more? Break it into small pieces o Share outcome and result of the meeting
  • 29. Other Headaches • Cross Functional Teams Good! • Outsourcing Generally Bad! • Centralization / Decentralization Varies case by case. Just think about it before you start. • Details and early optimizations blocks you to start something • People need uninterrupted time to finish their tasks • Context Over Consistency What makes sense here may not makes sense there* • Spend some time with other departments * Rework
  • 30. Thanks! • Have a question? Harun.yardimci@gmail.com hyardimci@ebay.com • Liked it? o Use it, share it, show it to your boss • Didn’t like it? o Pretend that you liked it and help me to make it better