SlideShare a Scribd company logo
1 of 68
Is Python still production
ready?
For Humans facing software
Warning
1. Clue/spoiler alert: We are at PyParis...
2. Because it’s a keynote, you won’t see in-depth technical details
3. First time I give a keynote
4. Please be gentle, I’m French Catalan with a strong accent ;-)
Is Python too old to be used on production
in 2017 ?
Python: 1990 (27 years ago)
Go: 2009 (8 years ago) Rust: 2010 (7 years ago)
COBOL: 1959 (58 years ago)
Creation date
Maybe, maybe not…
(Dr.) Who knows ?
Python: 2017 (This year)
Go: 2017 (This year) Rust: 2017 (This year)
COBOL: 2014 (3 years ago)
Last release
How to select the “right” future proof
technology ?
Wait a
minute...
1. An environment that provides
services are actually used
2. If the production goes down,
you will receive calls from
users
(= Best monitoring tool ever)
What is a production environment ?
What do we need to have a production ?
1. Server(s) instance(s)
2. First line support
3. Eventually an On-call 24/7
4. Monitoring
Warning: It can be the same person for all roles
Wait a
minute...
Because:
1. 1. Money (Companies)
2. 2. Help others (Non-profit)Why do we need to maintain a
production ?
Wait a minute...
What’s wrong in this presentation ?
Ordering wrong
priorities of
Wrong ordering of
priorities
How to detect the important and urgent
points of your project ?
Let’s start from the beginning: You
1. What are your personal priorities, motivations ?
Are these priorities compatible to build a project ?
a. Happiness
b. Help humanity, the nature
c. Change the world
d. Generate Money
e. Make fun of others
f. Make others suffer
g. Burn cars or chariots
What is your project ?
1. Try to forget technical tools
2. Ideally, observe your future users
3. Try to list technical constraints you have
4. Then, only at this moment, match with your toolbox
5. Avoid over-engineering of your project
What are the important points to build a
production ?
1. How to safely upgrade your production ?
2. How to create reproducible tests to detect regressions ?
3. How to safely “upgrade” your users ?
How to safely upgrade your production ?
1. Big bang upgrades are very bad for the stress
2. You must be able to upgrade only part of your production
3. You must be able to rebuild your entire stack quickly
4. Use proper tools:
Devops (Ex: Ansible)
virtual OS (VMs, containers)
How to create reproducible tests to detect
regressions ?
1. Take statistics of what is really used on your production
2. Test first the critical features
3. Be sure that your tests are as close as possible to the reality of your users
4. Prioritize!
Impossible to test everything at the first step
How to safely “upgrade” your users ?
1. They use your user interface (GUI)
2. Incompatibility changes
3. Major releases that break the habits (Ex: Microsoft)
Priority: the tasks complicated to change after the
release
1. GUI + User eXperience (UX)
2. Hardware specifications
3. APIs signatures
4. Foundations of your product
Humans upgrade process for the complicated
points
1.GUI rendering => Newsletter, documentation
2.Hardware specifications => New price list
3.APIs signatures => Retro Compatibility, API versioning
4.And for foundations ?
Foundations => One architect for decision
1. Explore several paths
2. But often, only one path can be taken
3. You must have a person to validate
4. Democracy is the worst decision system for that:
You need a technical production solution, not a politic solution
Foundations changes: Scientific approach
1. Analyze your global problem
2. Try to catch differences between the new trends and what you need for your
application
3. Work on your architecture: You aren’t Google or Facebook
4. You don’t need to be trendy, you need to be efficient for your problems
Machine upgrade process for the complicated
points
1. GUI rendering => Builtin with Web technologies
2. Hardware specifications => End Of Life support
3. APIs signatures => Different HTTP endpoints
4. Foundations =>
“Be able to change the engine of a flying plane”
Be able to change the engine of a flying plane ?
WAT?
Think your architecture where each element can be replaced, even Python
Have man-in-the-middle with external world to manipulate:
HTTP: HAProxy
SIP: Kamailio
Avoid the big bangs, migrate step by step by endpoint
How to build products ?
1. Quick prototype with Python
2. Validate the business model
3. Catch bugs in your production, not from your dreams
4. Change architecture and/or used libraries
5. #Troll_alert: Write automated tests suite ;-)
Which points are really important ?
You will make mistakes, then:
1. Don’t focus on fictive bugs at the beginning:
99% of chance you’ll discover other bigger issues
2. Avoid over-engineering
3. Lazier is better than fancy
4. Be able to change the engine of a flying plane
What else for your architecture ?
1. Keep several implementation patterns in mind:
a. Async
b. Threads
c. Multi-worker
2. Understand if you have IO-bound and/or CPU-bound problems
3. Re-use a maximum lower layers (Virtualization…)
4. Be able to split your problematic in “islands”:
Virtual Machines (VM) or containers are cheap
The world becomes more and more async
1. What is async ?
2. The world is natively async
3. Languages are more and more async native:
Javascript, Go, Python, C#...
4. WebSockets and HTTP/2 fit async pattern
Why do async in my Python ?
1. Be a time traveler
2. Become (almost) immortal
3. Follow my AsyncIO tutorial in E109/110 tomorrow at 14:00
But… keep a balance:
1. Don’t try to avoid all bugs if upgrades are easy
2. Don’t change too much your existing stack
3. If it works and handles the load, don’t change
4. Bugfixes are the first class citizen
5. Features are the second class citizen
In your context,
Is Python production
ready ?
Or not ?
By the way, what does it mean
“production ready” ?
For me, “production ready” means:
1. Almost no maintenance cost
2. Easy to repair (aka. upgrade)
3. Replicate and share the knowledge in several brains
4. At least one person must have a global overview of the architecture
How to select
the “right”
future proof
technology ?
1. 1. No unique answer
2. 2. Several answers are possible
3. 3. Answer change depends when you
ask the question
(Ex: Heavy vs Web GUI
In 90’s and 2010’s)
4. 4. Conclusion: Don’t waste too much
your time on that
First
conclusion
1. 1. Build things
2. 2. Understand lower layers
3. 3. You make mistakes
4. 4. Try to learn from your
mistakes
5. 5. Goto 1.
Spoiler alert
1. 1. You will fail
2. 2. It will take a lot of time to learn and
test
3. 3.there is no Royal Road
Euclid
4. 3. We have unequal brains
We have unequal brains
1. For the “Tour de France” (Bicycle competition):
a. Few will be on the top
b. Some will arrive in the last positions
c. Most of the population cannot achieve that
2. To compare with Development:
a. Few need 2 hours to do a development task
b. Some need 2 days for the same task
c. Most of the population cannot achieve that
Know your
(technical)
limits
1. 1. Competence != Confidence
a. Clearly two independent variables
2. 2. Use a tool != Build a tool
a. Exponential difference
3. 3. Be humble
a. a. A lot of people are smarter than you
b. b. Conferences are very good to discuss
with smarter people
Try to rationalize your real expertise/competence
1. What have you already coded ?
2. What is the complexity ?
3. How many people use your product ?
4. How many times do you need to do the “fireman” ?
Handle your
frustrations
1. 1. You have learnt to crawl, to
walk and to run in this order
2. 2. You must find what are the
crawl/walk/run steps you need to
learn a new technology
3. 3. It’s possible you’ll never reach
the end of the learning curve
The road is long, long, long, long...
Try to match your expectations with the reality
When you build your house
1. You see easily what is the progression
2. If you fail in the architecture, gravity will
crash your house
3. You can easily find workers
When you build your application
1. Very hard to see the progression
2. Not really a good governor to see if you made a
“good” or a “bad” architecture
3. Workers are complicated to find
And about Dev workers...
Conservative
1. 1. Follow
News/Twitter/conferences
2. 2. Take care about new trends
3. 3. Don’t hesitate to trash
knowledge to learn new tools
1.Take the leader tool
2.Never reboot a project
3.Don’t care about IT trends
Early Adopter
We are developers, we are the kings of the new
world
1. Software is everywhere now
2. Tools are more and more complex
3. Less and less people will have the global overview
4. In fact, we are the Gods, more powerful than Illuminatis
5. However...
Look the “system administrator” role
1. In 90’s, they are the kings in companies:
They can decide what softwares can be used in a company
2. 20 years later, most companies use cloud solutions:
a. Better service continuity
b. No ego problems anymore with sysadmins to change things:
You pay for a service directly
c. With a good devops toolbox, pretty easy to replace a lot of manual tasks originally done by
system administrators
d. Only few system administrators are becoming devops:
Not the same job, not the same skills, more developer oriented
Be humble
1. 1. Because it’s your role
= you are paid for that
2. 2. Because you could be easily
replaced by:
a. a. More conciliant people
b. b. More skilled people
c. c. On-the-shelf solution
d. d. AI ?
e. e. Me ;)
Help other people in the company
to sell your product
What is your goal for this conference ?
1. Be up-to-date about Python ecosystem ?
2. Discover new tools ?
3. Discuss with people who have the same problems ?
4. Show to others you are a “king” because you are in a conference ?
Be present != Be competent ;-)
5. Why people are here ?
Is Python still
production ready for me
?
Definitively Yes
Yes for me, because ? (#1)
Now apply “production ready” definition on Python itself:
1. The learning curve is the smallest possible
2. Python has clearly a big community
a. Look this event and others
3. A lot of libraries in PyPI are production ready:
a. Documented, tested, maintained with love
Yes for me, because ? (#2)
1. Between 1.0 and 3.6, Python has evolved:
a. Functional pattern support
b. A Reboot with Python 3.0
c. Async pattern support
d. Multi-paradigm in general
2. We have a “Benevolent Dictator for Life”: Guido
a. For the final decisions in the debates
3. Efficiency
What is efficiency ?
1. In 90’s, machines matter
a. CPU cost > Human brain
2. In 3rd Millennium, Human matter
a. CPU cost <<<<<< Human brain
3. Prioritize the human cost than the CPU cost
4. However, you must not follow the “fleur au fusil” approach
Benchmark your product
1. Have a staging instance with real data from production
2. Benchmarks to measure maximum capacity
3. Plan future optimizations
4. “Steal” ideas from others
a. during a conference for example
5. Open your chakras about biases
The collective unconscious (aka. “Python is
slow”)
1. Same patterns as the human prejudice
a. Color, gender...
2. We self-maintain this climate by self-flagellation
3.And about benchmarks themselves:
Spoiler alert v2 (Web scraping)
http://blog.dataweave.in/post/81760696759/web-scraping-at-scale-python-vs-go
Spoiler alert v3 (SQL queries)
https://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/
What to believe ?
1.Spoiler alert v4: Nobody
2. A benchmark is True and False at the same time:
a. True in the context where it was launched
b. False because:
i. Different of your production needs
ii. As everything in life, mistakes can be made
3. Take your own measures on your production
Where can you start ?
1. Read “High Performance Python”
2. Read Victor Stinner’s blog:
https://haypo.github.io/
3. Improve your measures toolbox
4. Be careful about auto-magic efficient
new solutions
5. Nevertheless, Python has a big toolbox
to handle efficiency problems
6. Measure, benchmark and restart
But, by the way, do you have efficiency problems?
1. Performance is an important governor,
BUT nevertheless secondary.
2. You must have first (a lot of) users.
3. Efficiency VS development time priority
Two large time consuming families
CPU-bound
Parsing
Computation
Machine learning
…
I/O bound
WebServices
Databases
What do Scientific Pythonists use?
CPU bound:
Cython
PyPy
Numba
Pandas
What do Network Pythonists use?
I/O bound with AsyncIO:
Uvloop
asyncpg
ujson
...
And by the way, Python, is it fast or slow?
1. I don’t know
2. On the other hand, Python is now fast enough for us to make money (dev
time and CPU) ;-)
3. While keeping an eye on our future growth
Conclusion #2 (Aka. hunting prejudices)
https://twitter.com/glyph/status/735390252865622016
By the way, is Python still production ready for
you ?
1. If you are at PyParis, we already know the answer.
2. But this keynote goal was also to give:
a. Some clues to have better overview for your work
b. Some remarks about the microcosm of a conference
Conclusion #3
1. You will make mistakes (architecture, management ...)
2. Do as little as possible
3. Reboot when you spend more time in maintaining than adding features
4. Do not be afraid to change the engine
Don’t forget
1. We all have different priorities and needs
2. Unique response or solution doesn’t exist
3. Be careful about new tools:
You will need to maintain during a long time when your project is online.
4. Be tolerant about others solutions…
5. ...while it doesn’t block you to work
Enjoy the
conference !
See you soon at:
1. EuroPython (Jul 2017)
2. PyCon-FR (Sep 2017)
3. Python-FOSDEM (Feb 2018)
And a lot of other events:
https://www.python.org/events
Thank you
Questions ?
Twitter: @GMLudo
Who I am ?
Creator of
API-Hour (Daemon framework for AsyncIO)
Aiosip (SIP implementation in AsyncIO)
Co-maintainer of Panoramisk (Asterisk binding for AsyncIO)
Contributor in several AsyncIO libraries like aiohttp
I did a lot of benchmarks to try to understand where are the bottlenecks
Now, I’m contributor of https://www.techempower.com/benchmarks/
Twitter: @GMLudo

More Related Content

What's hot

Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewModulabs
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.Vlad Fedosov
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet
 
cf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Woodcf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad WoodOrtus Solutions, Corp
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your OrganizationRobert Nelson
 
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"Fwdays
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebVũ Nguyễn
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Holden Karau
 
20151117 IoT를 위한 서비스 구성과 개발
20151117 IoT를 위한 서비스 구성과 개발20151117 IoT를 위한 서비스 구성과 개발
20151117 IoT를 위한 서비스 구성과 개발영욱 김
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1Shuen-Huei Guan
 
Practical automation for beginners
Practical automation for beginnersPractical automation for beginners
Practical automation for beginnersSeoweon Yoo
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rakejazzman1980
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemoachipa
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlowJeongkyu Shin
 

What's hot (20)

Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite PreviewMachine Learning on Your Hand - Introduction to Tensorflow Lite Preview
Machine Learning on Your Hand - Introduction to Tensorflow Lite Preview
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Stackato v6
Stackato v6Stackato v6
Stackato v6
 
Perl-Critic
Perl-CriticPerl-Critic
Perl-Critic
 
Dust.js
Dust.jsDust.js
Dust.js
 
Best node js course
Best node js courseBest node js course
Best node js course
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
 
cf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Woodcf.Objective() 2017 - Design patterns - Brad Wood
cf.Objective() 2017 - Design patterns - Brad Wood
 
X page developer
X page developerX page developer
X page developer
 
Puppetizing Your Organization
Puppetizing Your OrganizationPuppetizing Your Organization
Puppetizing Your Organization
 
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"Володимир Дубенко "Node.js for desktop development (based on Electron library)"
Володимир Дубенко "Node.js for desktop development (based on Electron library)"
 
WebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the WebWebRTC - Brings Real-Time to the Web
WebRTC - Brings Real-Time to the Web
 
Automate Thyself
Automate ThyselfAutomate Thyself
Automate Thyself
 
Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018Intro - End to end ML with Kubeflow @ SignalConf 2018
Intro - End to end ML with Kubeflow @ SignalConf 2018
 
20151117 IoT를 위한 서비스 구성과 개발
20151117 IoT를 위한 서비스 구성과 개발20151117 IoT를 위한 서비스 구성과 개발
20151117 IoT를 위한 서비스 구성과 개발
 
平行化你的工作 part1
平行化你的工作 part1平行化你的工作 part1
平行化你的工作 part1
 
Practical automation for beginners
Practical automation for beginnersPractical automation for beginners
Practical automation for beginners
 
From Ant to Rake
From Ant to RakeFrom Ant to Rake
From Ant to Rake
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
 
The Flow of TensorFlow
The Flow of TensorFlowThe Flow of TensorFlow
The Flow of TensorFlow
 

Similar to Is Python still production ready ? Ludovic Gasc

Continuous integration
Continuous integrationContinuous integration
Continuous integrationBoris Dominic
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye codeKim Moir
 
DevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdfDevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdfVishwas N
 
Advice for Computer Science freshers!
Advice for Computer Science freshers!Advice for Computer Science freshers!
Advice for Computer Science freshers!Karan Singh
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpAhmed Abdou
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Sigma Software
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Mirco Hering
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own languageAndrea Tino
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsOmid Vahdaty
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Ivo Jansch
 
Optimizing developer onboarding
Optimizing developer onboardingOptimizing developer onboarding
Optimizing developer onboarding🌯 Brian Douglas
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changesJaewoo Ahn
 
Testing & should i do it
Testing & should i do itTesting & should i do it
Testing & should i do itMartin Sykora
 
Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008coniecto
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringAndrew Kirkpatrick
 

Similar to Is Python still production ready ? Ludovic Gasc (20)

From open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysferaFrom open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysfera
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
DevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdfDevOps - A Purpose for an Institution.pdf
DevOps - A Purpose for an Institution.pdf
 
Advice for Computer Science freshers!
Advice for Computer Science freshers!Advice for Computer Science freshers!
Advice for Computer Science freshers!
 
PHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in phpPHP Mega Meetup, Sep, 2020, Anti patterns in php
PHP Mega Meetup, Sep, 2020, Anti patterns in php
 
Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"Stanislav Khorunzhyi, "Front-end it like a PRO"
Stanislav Khorunzhyi, "Front-end it like a PRO"
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
 
Debugging
DebuggingDebugging
Debugging
 
Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
 
TxJS 2011
TxJS 2011TxJS 2011
TxJS 2011
 
Creating a compiler for your own language
Creating a compiler for your own languageCreating a compiler for your own language
Creating a compiler for your own language
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)Enterprise PHP (PHP London Conference 2008)
Enterprise PHP (PHP London Conference 2008)
 
Optimizing developer onboarding
Optimizing developer onboardingOptimizing developer onboarding
Optimizing developer onboarding
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
 
Testing & should i do it
Testing & should i do itTesting & should i do it
Testing & should i do it
 
Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008Avram ODonovan Blogtalk2008
Avram ODonovan Blogtalk2008
 
How to get started with Site Reliability Engineering
How to get started with Site Reliability EngineeringHow to get started with Site Reliability Engineering
How to get started with Site Reliability Engineering
 

More from Pôle Systematic Paris-Region

OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...Pôle Systematic Paris-Region
 
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...Pôle Systematic Paris-Region
 
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...Pôle Systematic Paris-Region
 
OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...Pôle Systematic Paris-Region
 
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...Pôle Systematic Paris-Region
 
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...Pôle Systematic Paris-Region
 
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...Pôle Systematic Paris-Region
 
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick MoyOsis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick MoyPôle Systematic Paris-Region
 
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMAOsis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMAPôle Systematic Paris-Region
 
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur BittorrentOsis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur BittorrentPôle Systematic Paris-Region
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...Pôle Systematic Paris-Region
 
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riotOSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riotPôle Systematic Paris-Region
 
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...Pôle Systematic Paris-Region
 
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...Pôle Systematic Paris-Region
 
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...Pôle Systematic Paris-Region
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)Pôle Systematic Paris-Region
 
PyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelatPyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelatPôle Systematic Paris-Region
 

More from Pôle Systematic Paris-Region (20)

OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
 
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
 
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
 
OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...
 
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
 
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
 
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
 
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick MoyOsis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy
Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy
 
Osis18_Cloud : Pas de commun sans communauté ?
Osis18_Cloud : Pas de commun sans communauté ?Osis18_Cloud : Pas de commun sans communauté ?
Osis18_Cloud : Pas de commun sans communauté ?
 
Osis18_Cloud : Projet Wolphin
Osis18_Cloud : Projet Wolphin Osis18_Cloud : Projet Wolphin
Osis18_Cloud : Projet Wolphin
 
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMAOsis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
 
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur BittorrentOsis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
 
Osis18_Cloud : Software-heritage
Osis18_Cloud : Software-heritageOsis18_Cloud : Software-heritage
Osis18_Cloud : Software-heritage
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riotOSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
 
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
 
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
 
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
 
PyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelatPyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelat
 

Recently uploaded

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
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 educationjfdjdjcjdnsjd
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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 WorkerThousandEyes
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 

Recently uploaded (20)

Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.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
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Is Python still production ready ? Ludovic Gasc

  • 1. Is Python still production ready? For Humans facing software
  • 2. Warning 1. Clue/spoiler alert: We are at PyParis... 2. Because it’s a keynote, you won’t see in-depth technical details 3. First time I give a keynote 4. Please be gentle, I’m French Catalan with a strong accent ;-)
  • 3. Is Python too old to be used on production in 2017 ? Python: 1990 (27 years ago) Go: 2009 (8 years ago) Rust: 2010 (7 years ago) COBOL: 1959 (58 years ago) Creation date
  • 4. Maybe, maybe not… (Dr.) Who knows ? Python: 2017 (This year) Go: 2017 (This year) Rust: 2017 (This year) COBOL: 2014 (3 years ago) Last release
  • 5. How to select the “right” future proof technology ?
  • 6. Wait a minute... 1. An environment that provides services are actually used 2. If the production goes down, you will receive calls from users (= Best monitoring tool ever) What is a production environment ?
  • 7. What do we need to have a production ? 1. Server(s) instance(s) 2. First line support 3. Eventually an On-call 24/7 4. Monitoring Warning: It can be the same person for all roles
  • 8. Wait a minute... Because: 1. 1. Money (Companies) 2. 2. Help others (Non-profit)Why do we need to maintain a production ?
  • 10. What’s wrong in this presentation ?
  • 12. Wrong ordering of priorities How to detect the important and urgent points of your project ?
  • 13. Let’s start from the beginning: You 1. What are your personal priorities, motivations ? Are these priorities compatible to build a project ? a. Happiness b. Help humanity, the nature c. Change the world d. Generate Money e. Make fun of others f. Make others suffer g. Burn cars or chariots
  • 14. What is your project ? 1. Try to forget technical tools 2. Ideally, observe your future users 3. Try to list technical constraints you have 4. Then, only at this moment, match with your toolbox 5. Avoid over-engineering of your project
  • 15. What are the important points to build a production ? 1. How to safely upgrade your production ? 2. How to create reproducible tests to detect regressions ? 3. How to safely “upgrade” your users ?
  • 16. How to safely upgrade your production ? 1. Big bang upgrades are very bad for the stress 2. You must be able to upgrade only part of your production 3. You must be able to rebuild your entire stack quickly 4. Use proper tools: Devops (Ex: Ansible) virtual OS (VMs, containers)
  • 17. How to create reproducible tests to detect regressions ? 1. Take statistics of what is really used on your production 2. Test first the critical features 3. Be sure that your tests are as close as possible to the reality of your users 4. Prioritize! Impossible to test everything at the first step
  • 18. How to safely “upgrade” your users ? 1. They use your user interface (GUI) 2. Incompatibility changes 3. Major releases that break the habits (Ex: Microsoft)
  • 19. Priority: the tasks complicated to change after the release 1. GUI + User eXperience (UX) 2. Hardware specifications 3. APIs signatures 4. Foundations of your product
  • 20. Humans upgrade process for the complicated points 1.GUI rendering => Newsletter, documentation 2.Hardware specifications => New price list 3.APIs signatures => Retro Compatibility, API versioning 4.And for foundations ?
  • 21. Foundations => One architect for decision 1. Explore several paths 2. But often, only one path can be taken 3. You must have a person to validate 4. Democracy is the worst decision system for that: You need a technical production solution, not a politic solution
  • 22. Foundations changes: Scientific approach 1. Analyze your global problem 2. Try to catch differences between the new trends and what you need for your application 3. Work on your architecture: You aren’t Google or Facebook 4. You don’t need to be trendy, you need to be efficient for your problems
  • 23. Machine upgrade process for the complicated points 1. GUI rendering => Builtin with Web technologies 2. Hardware specifications => End Of Life support 3. APIs signatures => Different HTTP endpoints 4. Foundations => “Be able to change the engine of a flying plane”
  • 24. Be able to change the engine of a flying plane ? WAT? Think your architecture where each element can be replaced, even Python Have man-in-the-middle with external world to manipulate: HTTP: HAProxy SIP: Kamailio Avoid the big bangs, migrate step by step by endpoint
  • 25. How to build products ? 1. Quick prototype with Python 2. Validate the business model 3. Catch bugs in your production, not from your dreams 4. Change architecture and/or used libraries 5. #Troll_alert: Write automated tests suite ;-)
  • 26. Which points are really important ? You will make mistakes, then: 1. Don’t focus on fictive bugs at the beginning: 99% of chance you’ll discover other bigger issues 2. Avoid over-engineering 3. Lazier is better than fancy 4. Be able to change the engine of a flying plane
  • 27. What else for your architecture ? 1. Keep several implementation patterns in mind: a. Async b. Threads c. Multi-worker 2. Understand if you have IO-bound and/or CPU-bound problems 3. Re-use a maximum lower layers (Virtualization…) 4. Be able to split your problematic in “islands”: Virtual Machines (VM) or containers are cheap
  • 28. The world becomes more and more async 1. What is async ? 2. The world is natively async 3. Languages are more and more async native: Javascript, Go, Python, C#... 4. WebSockets and HTTP/2 fit async pattern
  • 29. Why do async in my Python ? 1. Be a time traveler 2. Become (almost) immortal 3. Follow my AsyncIO tutorial in E109/110 tomorrow at 14:00
  • 30. But… keep a balance: 1. Don’t try to avoid all bugs if upgrades are easy 2. Don’t change too much your existing stack 3. If it works and handles the load, don’t change 4. Bugfixes are the first class citizen 5. Features are the second class citizen
  • 31. In your context, Is Python production ready ? Or not ?
  • 32. By the way, what does it mean “production ready” ?
  • 33. For me, “production ready” means: 1. Almost no maintenance cost 2. Easy to repair (aka. upgrade) 3. Replicate and share the knowledge in several brains 4. At least one person must have a global overview of the architecture
  • 34. How to select the “right” future proof technology ? 1. 1. No unique answer 2. 2. Several answers are possible 3. 3. Answer change depends when you ask the question (Ex: Heavy vs Web GUI In 90’s and 2010’s) 4. 4. Conclusion: Don’t waste too much your time on that
  • 35. First conclusion 1. 1. Build things 2. 2. Understand lower layers 3. 3. You make mistakes 4. 4. Try to learn from your mistakes 5. 5. Goto 1.
  • 36. Spoiler alert 1. 1. You will fail 2. 2. It will take a lot of time to learn and test 3. 3.there is no Royal Road Euclid 4. 3. We have unequal brains
  • 37. We have unequal brains 1. For the “Tour de France” (Bicycle competition): a. Few will be on the top b. Some will arrive in the last positions c. Most of the population cannot achieve that 2. To compare with Development: a. Few need 2 hours to do a development task b. Some need 2 days for the same task c. Most of the population cannot achieve that
  • 38. Know your (technical) limits 1. 1. Competence != Confidence a. Clearly two independent variables 2. 2. Use a tool != Build a tool a. Exponential difference 3. 3. Be humble a. a. A lot of people are smarter than you b. b. Conferences are very good to discuss with smarter people
  • 39. Try to rationalize your real expertise/competence 1. What have you already coded ? 2. What is the complexity ? 3. How many people use your product ? 4. How many times do you need to do the “fireman” ?
  • 40. Handle your frustrations 1. 1. You have learnt to crawl, to walk and to run in this order 2. 2. You must find what are the crawl/walk/run steps you need to learn a new technology 3. 3. It’s possible you’ll never reach the end of the learning curve The road is long, long, long, long...
  • 41. Try to match your expectations with the reality When you build your house 1. You see easily what is the progression 2. If you fail in the architecture, gravity will crash your house 3. You can easily find workers When you build your application 1. Very hard to see the progression 2. Not really a good governor to see if you made a “good” or a “bad” architecture 3. Workers are complicated to find And about Dev workers...
  • 42. Conservative 1. 1. Follow News/Twitter/conferences 2. 2. Take care about new trends 3. 3. Don’t hesitate to trash knowledge to learn new tools 1.Take the leader tool 2.Never reboot a project 3.Don’t care about IT trends Early Adopter
  • 43. We are developers, we are the kings of the new world 1. Software is everywhere now 2. Tools are more and more complex 3. Less and less people will have the global overview 4. In fact, we are the Gods, more powerful than Illuminatis 5. However...
  • 44. Look the “system administrator” role 1. In 90’s, they are the kings in companies: They can decide what softwares can be used in a company 2. 20 years later, most companies use cloud solutions: a. Better service continuity b. No ego problems anymore with sysadmins to change things: You pay for a service directly c. With a good devops toolbox, pretty easy to replace a lot of manual tasks originally done by system administrators d. Only few system administrators are becoming devops: Not the same job, not the same skills, more developer oriented
  • 45. Be humble 1. 1. Because it’s your role = you are paid for that 2. 2. Because you could be easily replaced by: a. a. More conciliant people b. b. More skilled people c. c. On-the-shelf solution d. d. AI ? e. e. Me ;) Help other people in the company to sell your product
  • 46. What is your goal for this conference ? 1. Be up-to-date about Python ecosystem ? 2. Discover new tools ? 3. Discuss with people who have the same problems ? 4. Show to others you are a “king” because you are in a conference ? Be present != Be competent ;-) 5. Why people are here ?
  • 47. Is Python still production ready for me ? Definitively Yes
  • 48. Yes for me, because ? (#1) Now apply “production ready” definition on Python itself: 1. The learning curve is the smallest possible 2. Python has clearly a big community a. Look this event and others 3. A lot of libraries in PyPI are production ready: a. Documented, tested, maintained with love
  • 49. Yes for me, because ? (#2) 1. Between 1.0 and 3.6, Python has evolved: a. Functional pattern support b. A Reboot with Python 3.0 c. Async pattern support d. Multi-paradigm in general 2. We have a “Benevolent Dictator for Life”: Guido a. For the final decisions in the debates 3. Efficiency
  • 50. What is efficiency ? 1. In 90’s, machines matter a. CPU cost > Human brain 2. In 3rd Millennium, Human matter a. CPU cost <<<<<< Human brain 3. Prioritize the human cost than the CPU cost 4. However, you must not follow the “fleur au fusil” approach
  • 51. Benchmark your product 1. Have a staging instance with real data from production 2. Benchmarks to measure maximum capacity 3. Plan future optimizations 4. “Steal” ideas from others a. during a conference for example 5. Open your chakras about biases
  • 52. The collective unconscious (aka. “Python is slow”) 1. Same patterns as the human prejudice a. Color, gender... 2. We self-maintain this climate by self-flagellation 3.And about benchmarks themselves:
  • 53. Spoiler alert v2 (Web scraping) http://blog.dataweave.in/post/81760696759/web-scraping-at-scale-python-vs-go
  • 54. Spoiler alert v3 (SQL queries) https://magic.io/blog/asyncpg-1m-rows-from-postgres-to-python/
  • 55. What to believe ? 1.Spoiler alert v4: Nobody 2. A benchmark is True and False at the same time: a. True in the context where it was launched b. False because: i. Different of your production needs ii. As everything in life, mistakes can be made 3. Take your own measures on your production
  • 56. Where can you start ? 1. Read “High Performance Python” 2. Read Victor Stinner’s blog: https://haypo.github.io/ 3. Improve your measures toolbox 4. Be careful about auto-magic efficient new solutions 5. Nevertheless, Python has a big toolbox to handle efficiency problems 6. Measure, benchmark and restart
  • 57. But, by the way, do you have efficiency problems? 1. Performance is an important governor, BUT nevertheless secondary. 2. You must have first (a lot of) users. 3. Efficiency VS development time priority
  • 58. Two large time consuming families CPU-bound Parsing Computation Machine learning … I/O bound WebServices Databases
  • 59. What do Scientific Pythonists use? CPU bound: Cython PyPy Numba Pandas
  • 60. What do Network Pythonists use? I/O bound with AsyncIO: Uvloop asyncpg ujson ...
  • 61. And by the way, Python, is it fast or slow? 1. I don’t know 2. On the other hand, Python is now fast enough for us to make money (dev time and CPU) ;-) 3. While keeping an eye on our future growth
  • 62. Conclusion #2 (Aka. hunting prejudices) https://twitter.com/glyph/status/735390252865622016
  • 63. By the way, is Python still production ready for you ? 1. If you are at PyParis, we already know the answer. 2. But this keynote goal was also to give: a. Some clues to have better overview for your work b. Some remarks about the microcosm of a conference
  • 64. Conclusion #3 1. You will make mistakes (architecture, management ...) 2. Do as little as possible 3. Reboot when you spend more time in maintaining than adding features 4. Do not be afraid to change the engine
  • 65. Don’t forget 1. We all have different priorities and needs 2. Unique response or solution doesn’t exist 3. Be careful about new tools: You will need to maintain during a long time when your project is online. 4. Be tolerant about others solutions… 5. ...while it doesn’t block you to work
  • 66. Enjoy the conference ! See you soon at: 1. EuroPython (Jul 2017) 2. PyCon-FR (Sep 2017) 3. Python-FOSDEM (Feb 2018) And a lot of other events: https://www.python.org/events
  • 68. Who I am ? Creator of API-Hour (Daemon framework for AsyncIO) Aiosip (SIP implementation in AsyncIO) Co-maintainer of Panoramisk (Asterisk binding for AsyncIO) Contributor in several AsyncIO libraries like aiohttp I did a lot of benchmarks to try to understand where are the bottlenecks Now, I’m contributor of https://www.techempower.com/benchmarks/ Twitter: @GMLudo

Editor's Notes

  1. Millennium
  2. Quickly = 5 minutes
  3. 2. First the critical features = where you’ll receive a call in 5 minutes in case of it’s broken
  4. Bugfixes are the first class citizen: (Reduce support costs, happier users…)
  5. 4. It will be detailed in the next slide