SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Automate Database Migration
using Flyway framework
Karthickeyan Narasimhan | @hellokarthic
Product Developer, Freshworks
DISCLAIMER
The views expressed during and with respect to this presentation are those of the presenter and do not necessarily reflect the
views of the company, Freshworks. The logos or service names (collectively, "Trademarks") used in the presentation are for the
purposes of identifying the relevant service providers. Freshworks does not claim any right or ownership over such Trademarks.
The images used in the presentation are for illustrative purposes only. For any questions pertaining to the presentation's use,
distribution or publication, please write to the presenter.
All rights reserved by Freshworks Inc.
About Me
● Product Developer at Freshworks Technologies Private Limited.
● Over 2+ years of Experience in Web Development
● FOSS Enthusiast
● Mozilla Rep(India) & Tech Speaker
● Mozilla Campus Advisory Committee Board Member
● A Tale of Manual DB Migration
● What are the ways to solve the DB Migration problem
● How flyway came to our rescue
● Live Demo on applying flyway to your project
● Challenges we faced while using Flyway
● Q&A, Resource sharing
Overview
A Tale of Manual DB Migration
Ways to solve?
Come let’s fly with Flyway!
Supports Plain SQL / Java based migrations
6 major commands- Info, Migrate, Repair, Clean, Baseline & Validate
Multiple & Simple Setup - Supports Gradle, Maven, ANT, etc
Flyway is an Open source tool for managing Database migration -KISS Approach
Conventions over Configuration
● Usually contains DDL statements
● Or reference data, data fixes.
○ Did we change the country code(or currency) table on this
machine?
● Use JDBC code for complex migration
○ Not checksummed by default unlike SQL migrations.
What’s in a Migration?
build.gradle
Naming Conventions
Let’s see in Action
Image Source: www.giphy.com
How you did that?
● Working with maintenance branches
● Working with feature branches
● Working with lots of migrations
Use Case 3
Use Case 1
Use Case 2
Use Case 3
Problem: Working with maintenance branches
● DB prod schema evolves linearly
● Ensure maintenance migrations happen before
migrations belonging to later release
● use major.minor version scheme for maintenance
○ V1.1 comes after V1 but before V2
○ In practice
V001_01__increase_comment_size.sql
Use Case 3
Solution: Working with maintenance branchesUse Case 1
Use Case 2
Use Case 3
Use Case 3Use Case 3
Use Case 1
Use Case 2
Use Case 3
Problem: Working with feature branches
Use Case 3
Use Case 1
Use Case 2
Use Case 3
Solution: Working with feature branches
V2018_01_01_2330__Add_newTable.sql
Use Case 3
Use Case 1
Use Case 2
Use Case 3
Solution: Working with feature branches
Use Case 3
Use Case 1
Use Case 2
Use Case 3
Problem: Working with lot of migrations
Image Source: www.giphy.com
● Squashing migrations
● Squash all applied migration files into
one or two files
○ DDL+Reference data
● Use baseline
gradle flywaybaseline -Dflyway.baselineVersion=<version>
Use Case 3
Use Case 1
Use Case 2
Use Case 3
Solution: Working with lot of migrations
What are you waiting for?
How to Contribute?
https://stackoverflow.com/questions/tagged/flyway
https://flywaydb.org/documentation/contribute/website/
https://flywaydb.org/documentation/contribute/code/
https://tinyurl.com/DevDayDaNang
Resources
Image Source: From the movie “A Serious Man”
Karthickeyan Narasimhan
Product Developer, Freshworks
www.facebook.com/hellokarthic
@hellokarthic
https://www.linkedin.com/in/hellokarthic/
karthickeyan@freshworks.com

Weitere ähnliche Inhalte

Ähnlich wie [DevDay2018] Automate database migration using flyway framework - By Karthickeyan Narasimhan, Product Developer at Freshworks Inc

Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
PostgresOpen
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
sflynn073
 

Ähnlich wie [DevDay2018] Automate database migration using flyway framework - By Karthickeyan Narasimhan, Product Developer at Freshworks Inc (20)

Upgrading from 6.x to 7.x -- Webinar Q&A
Upgrading from 6.x to 7.x -- Webinar Q&AUpgrading from 6.x to 7.x -- Webinar Q&A
Upgrading from 6.x to 7.x -- Webinar Q&A
 
Continuous Database Delivery - 7/12/2018
Continuous Database Delivery - 7/12/2018Continuous Database Delivery - 7/12/2018
Continuous Database Delivery - 7/12/2018
 
38. Magento Meetup Austria: Ivan Cuk - From Core to Custom. A Deep Dive into ...
38. Magento Meetup Austria: Ivan Cuk - From Core to Custom. A Deep Dive into ...38. Magento Meetup Austria: Ivan Cuk - From Core to Custom. A Deep Dive into ...
38. Magento Meetup Austria: Ivan Cuk - From Core to Custom. A Deep Dive into ...
 
Trunk based development
Trunk based developmentTrunk based development
Trunk based development
 
Mulesoft torronto meetup_16
Mulesoft torronto meetup_16Mulesoft torronto meetup_16
Mulesoft torronto meetup_16
 
Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
 
Rails data migrations
Rails data migrationsRails data migrations
Rails data migrations
 
Preview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web ComponentsPreview: Local Development for Lightning Web Components
Preview: Local Development for Lightning Web Components
 
Delivering changes for applications and databases
Delivering changes for applications and databasesDelivering changes for applications and databases
Delivering changes for applications and databases
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
 
Scaling Ride-Hailing with Machine Learning on MLflow
Scaling Ride-Hailing with Machine Learning on MLflowScaling Ride-Hailing with Machine Learning on MLflow
Scaling Ride-Hailing with Machine Learning on MLflow
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
 
Dark launch
Dark launchDark launch
Dark launch
 
Migrating from Magento 1 to Magento 2
Migrating from Magento 1 to Magento 2Migrating from Magento 1 to Magento 2
Migrating from Magento 1 to Magento 2
 
Flyway _ A Database Version Management Tool
Flyway _ A Database Version Management ToolFlyway _ A Database Version Management Tool
Flyway _ A Database Version Management Tool
 
Why retail companies can't afford database downtime
Why retail companies can't afford database downtimeWhy retail companies can't afford database downtime
Why retail companies can't afford database downtime
 
O365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - MaterialO365 Developer Bootcamp NJ 2018 - Material
O365 Developer Bootcamp NJ 2018 - Material
 
2019 State of DevOps Report: Database Best Practices for Strong DevOps
2019 State of DevOps Report: Database Best Practices for Strong DevOps2019 State of DevOps Report: Database Best Practices for Strong DevOps
2019 State of DevOps Report: Database Best Practices for Strong DevOps
 
Agile Methods and Data Warehousing (2016 update)
Agile Methods and Data Warehousing (2016 update)Agile Methods and Data Warehousing (2016 update)
Agile Methods and Data Warehousing (2016 update)
 
ngStockholm #8 at NetEnt - Micro Frontend Architecture
ngStockholm #8 at NetEnt - Micro Frontend ArchitecturengStockholm #8 at NetEnt - Micro Frontend Architecture
ngStockholm #8 at NetEnt - Micro Frontend Architecture
 

Mehr von DevDay.org

Mehr von DevDay.org (20)

[DevDay2019] Lean UX - By Bryant Castro, Bryant Castro at Wizeline
[DevDay2019] Lean UX - By  Bryant Castro,  Bryant Castro at Wizeline[DevDay2019] Lean UX - By  Bryant Castro,  Bryant Castro at Wizeline
[DevDay2019] Lean UX - By Bryant Castro, Bryant Castro at Wizeline
 
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
[DevDay2019] Why you'll lose without UX Design - By Szilard Toth, CTO at e·pi...
 
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
[DevDay2019] Things i wish I knew when I was a 23-year-old Developer - By Chr...
 
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
[DevDay2019] Designing design teams - Christopher Nguyen, UX Manager at Wizeline
 
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
[DevDay2019] Growth Hacking - How to double the benefits of your startup with...
 
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
[DevDay2019] Collaborate or die: The designers’ guide to working with develop...
 
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
[DevDay2019] How AI is changing the future of Software Testing? - By Vui Nguy...
 
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
[DevDay2019] Hands-on Machine Learning on Google Cloud Platform - By Thanh Le...
 
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
[DevDay2019] Micro Frontends Architecture - By Thang Pham, Senior Software En...
 
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
[DevDay2019] Power of Test Automation and DevOps combination - One click savi...
 
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
[DevDay2019] How do I test AI models? - By Minh Hoang, Senior QA Engineer at KMS
 
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
[DevDay2019] How to quickly become a Senior Engineer - By Tran Anh Minh, CEO ...
 
[Devday2019] Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
[Devday2019]  Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...[Devday2019]  Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
[Devday2019] Dev start-up - By Le Trung, Founder & CEO at Hifiveplus and Edu...
 
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
[DevDay2019] Web Development In 2019 - A Practical Guide - By Hoang Nhu Vinh,...
 
[DevDay2019] Opportunities and challenges for human resources during the digi...
[DevDay2019] Opportunities and challenges for human resources during the digi...[DevDay2019] Opportunities and challenges for human resources during the digi...
[DevDay2019] Opportunities and challenges for human resources during the digi...
 
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
[DevDay2019] Python Machine Learning with Jupyter Notebook - By Nguyen Huu Th...
 
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
[DevDay2019] Do you dockerize? Are your containers safe? - By Pham Hong Khanh...
 
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
[DevDay2019] Develop a web application with Kubernetes - By Nguyen Xuan Phong...
 
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
[DevDay2019] Paradigm shift towards effective Scrum - By Tam Doan, Agile Coac...
 
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
[DevDay2019] JAM Stack - By Ngo Thi Ni, Web Developer at Agility IO
 

Kürzlich hochgeladen

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

[DevDay2018] Automate database migration using flyway framework - By Karthickeyan Narasimhan, Product Developer at Freshworks Inc

  • 1. Automate Database Migration using Flyway framework Karthickeyan Narasimhan | @hellokarthic Product Developer, Freshworks
  • 2. DISCLAIMER The views expressed during and with respect to this presentation are those of the presenter and do not necessarily reflect the views of the company, Freshworks. The logos or service names (collectively, "Trademarks") used in the presentation are for the purposes of identifying the relevant service providers. Freshworks does not claim any right or ownership over such Trademarks. The images used in the presentation are for illustrative purposes only. For any questions pertaining to the presentation's use, distribution or publication, please write to the presenter. All rights reserved by Freshworks Inc.
  • 3. About Me ● Product Developer at Freshworks Technologies Private Limited. ● Over 2+ years of Experience in Web Development ● FOSS Enthusiast ● Mozilla Rep(India) & Tech Speaker ● Mozilla Campus Advisory Committee Board Member
  • 4. ● A Tale of Manual DB Migration ● What are the ways to solve the DB Migration problem ● How flyway came to our rescue ● Live Demo on applying flyway to your project ● Challenges we faced while using Flyway ● Q&A, Resource sharing Overview
  • 5. A Tale of Manual DB Migration
  • 7. Come let’s fly with Flyway! Supports Plain SQL / Java based migrations 6 major commands- Info, Migrate, Repair, Clean, Baseline & Validate Multiple & Simple Setup - Supports Gradle, Maven, ANT, etc Flyway is an Open source tool for managing Database migration -KISS Approach Conventions over Configuration
  • 8. ● Usually contains DDL statements ● Or reference data, data fixes. ○ Did we change the country code(or currency) table on this machine? ● Use JDBC code for complex migration ○ Not checksummed by default unlike SQL migrations. What’s in a Migration?
  • 11. Let’s see in Action Image Source: www.giphy.com
  • 12. How you did that? ● Working with maintenance branches ● Working with feature branches ● Working with lots of migrations
  • 13. Use Case 3 Use Case 1 Use Case 2 Use Case 3 Problem: Working with maintenance branches
  • 14. ● DB prod schema evolves linearly ● Ensure maintenance migrations happen before migrations belonging to later release ● use major.minor version scheme for maintenance ○ V1.1 comes after V1 but before V2 ○ In practice V001_01__increase_comment_size.sql Use Case 3 Solution: Working with maintenance branchesUse Case 1 Use Case 2 Use Case 3
  • 15. Use Case 3Use Case 3 Use Case 1 Use Case 2 Use Case 3 Problem: Working with feature branches
  • 16. Use Case 3 Use Case 1 Use Case 2 Use Case 3 Solution: Working with feature branches V2018_01_01_2330__Add_newTable.sql
  • 17. Use Case 3 Use Case 1 Use Case 2 Use Case 3 Solution: Working with feature branches
  • 18. Use Case 3 Use Case 1 Use Case 2 Use Case 3 Problem: Working with lot of migrations Image Source: www.giphy.com
  • 19. ● Squashing migrations ● Squash all applied migration files into one or two files ○ DDL+Reference data ● Use baseline gradle flywaybaseline -Dflyway.baselineVersion=<version> Use Case 3 Use Case 1 Use Case 2 Use Case 3 Solution: Working with lot of migrations
  • 20. What are you waiting for?
  • 23. Image Source: From the movie “A Serious Man”
  • 24. Karthickeyan Narasimhan Product Developer, Freshworks www.facebook.com/hellokarthic @hellokarthic https://www.linkedin.com/in/hellokarthic/ karthickeyan@freshworks.com