Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Pythonで書かれたマイクロサービスを2to3した
Search
iwamot
April 14, 2022
Technology
0
690
Pythonで書かれたマイクロサービスを2to3した
2022-04-14
みんなのPython勉強会 #80 懇親会
https://startpython.connpass.com/event/242556/
iwamot
April 14, 2022
Tweet
Share
More Decks by iwamot
See All by iwamot
ECS on FargateへのSeekable OCI導入レポート
iwamot
0
320
サービスクォータ、ちゃんと監視してますか?
iwamot
0
580
AWS Well-Architected Toolで信頼性をレビューした結果
iwamot
0
290
テックカンパニーとしてのENECHANGEの中期目標
iwamot
0
52
AIの活用状況と今後の展望
iwamot
0
48
ENECHANGE社のAWSセキュリティ改革ストーリー
iwamot
0
120
ALBのアクセスログをAthenaで分析してSLOをゆるく決める
iwamot
2
1k
ChatGPT in SlackでAI Slackbotを楽しく運用する
iwamot
1
330
Function callingによるSlackbotの機能拡張
iwamot
2
150
Other Decks in Technology
See All in Technology
Databricks におけるデータエンジニアリング
databricksjapan
0
370
20240416_devopsdaystokyo
kzkmaeda
1
180
ここが嬉しいABAC ここが辛いよABAC #再解説+補足編
masahirokawahara
0
200
Oracle Cloud Infrastructure:2024年4月度サービス・アップデート
oracle4engineer
PRO
1
100
最近たまに見かけるTiDBってなんだ? - Findy
pingcap0315
2
540
反実仮想機械学習とは何か
usaito
PRO
6
1.7k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs (QCon London)
inesmontani
PRO
1
150
AWS を使う上で知っておきたいオンプレミス知識/aws-on-premise-essentials
emiki
1
4.2k
なぜ NOT A HOTEL が Web3 に取り組むのか - NOT A HOTEL TECH TALK
ynunokawa
0
160
小さな開発会社がWebサービスを作る理由
polidog
PRO
1
150
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
3
750
Algyan イベント振り返り
linyixian
0
180
Featured
See All Featured
Navigating Team Friction
lara
177
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
Producing Creativity
orderedlist
PRO
336
39k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Debugging Ruby Performance
tmm1
70
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
220
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
320
23k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
273
13k
Build your cross-platform service in a week with App Engine
jlugia
225
17k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
Transcript
Pythonで書かれたマイクロサービスを 2to3した 2022-04-14 みんなのPython勉強会 #80 懇親会 https://startpython.connpass.com/event/242556/ Takashi Iwamoto (@iwamot)
技術的負債を解消したくて転職した 昨夏、AWS Japanを辞めてENECHANGE株式会社に転職した 面接時に「技術的負債の解消に取り組みたい」と明言した 内定をもらえ、負債の解消がミッションのひとつとなった
Python 2のコードがあった Elastic BeanstalkのDockerコンテナで動いているFlaskアプリ Lambdaに移行すればコストを減らせる LambdaではPython2のサポートが終わっている
Python 3に上げることにした 「移行に取り組みたい」と手を挙げ、OKをもらった
テストを走らせたらfailした 9%のテストケースがfailした パフォーマンス向上のためのコード改善が原因だった
passするように直した テストケースとソースコードを修正した カバレッジは80%と高めだった
2to3というツールがあることを知った 2to3 - Python 2 から 3 への自動コード変換 https://docs.python.org/ja/3/library/2to3.html Python
3の公式Dockerイメージにも2to3が含まれている $ docker run -it --rm python:3 2to3 --help | head -1 Usage: 2to3 [options] file|dir ...
2to3を実行したら、色々変換された (1) dict - dict.values() + list(dict.values()) - dict.iteritems() +
dict.items() except - except Exception, e: + except Exception as e:
2to3を実行したら、色々変換された (2) has_key - dict.has_key(key) + key in dict import
- import weather + from . import weather
2to3を実行したら、色々変換された (3) imports - import ConfigParser + import configparser print
- print 'foo' + print('foo')
2to3を実行したら、色々変換された (4) unicode - u'foo' + 'foo' xrange - range(1,
13) + list(range(1, 13))
必要ない変換は元に戻した たとえばdictによる変換は不要だった - list(dict.values()) + dict.values() Python 2では dict.values() はリストを返す
Python 3では dict.values() はビューオブジェクトを返す ビューオブジェクトのまま処理できるなら、そのままでよい
あとは手作業で進めた 依存パッケージのアップグレード テストがfailする部分の修正 Lambda対応
2to3があってよかった 初見から数日で移行できた こういう移行ツールが用意されていると助かる
負債に困ったらご相談ください Spot Resourceという屋号で副業しています https://iwamot.github.io/