Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
AskDoctorsの13年目を支える技術
Owl
March 22, 2019
Programming
0
250
AskDoctorsの13年目を支える技術
RailsDM2019 Day1 B-7 登壇資料 『AskDoctorsの13年目を支える技術』
Owl
March 22, 2019
Tweet
Share
Other Decks in Programming
See All in Programming
【Scrum Fest Osaka 2022】スクラムチームに放り込まれた若手エンジニアの皆さん、どのように技術のキャッチアップをしていくかイメージはついていますか?
miiiki
0
110
JetPackComposeは宣言型プログラミングパラダイムって実はよくわかってないんですが、別に使ってもいいんですよね、
conigashima
0
180
iOS 16からのロック画面Widget争奪戦に備える
tsuzuki817
0
230
RFC 9111: HTTP Caching
jxck
0
160
実践エクストリームプログラミング / Extreme Programming in Practice
enk
1
530
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
320
JSのウェブフレームワークで高速なルーターを実装する方法
usualoma
1
1.8k
ES2022の新機能
smt7174
0
250
Angular-basierte Micro Frontends mit Module Federation @API Summit
manfredsteyer
PRO
0
110
1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku
marchin1989
2
620
Deep Dive Into Google Zanzibar and its Concepts for Authorization Scenarios
dschenkelman
1
130
Gitlab CIでMRを自動生成する
forcia_dev_pr
0
110
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
337
17k
GraphQLの誤解/rethinking-graphql
sonatard
28
6.6k
The Mythical Team-Month
searls
209
39k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Large-scale JavaScript Application Architecture
addyosmani
499
110k
A better future with KSS
kneath
225
15k
Done Done
chrislema
174
14k
Bootstrapping a Software Product
garrettdimon
296
110k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
237
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
181
15k
Mobile First: as difficult as doing things right
swwweet
213
7.5k
Transcript
Technologies supporting for 13 years @RailsDM 2019
> Web Engineer @M3, inc > Love Ruby, Vim, Gopher
> Board-game Geek About Me Owl (@owl_works)
Changing the World of Medicine Using the Internet
Central Service: m3.com 270,000 In Japan 4,500,000 Worldwide Member Doctors
Our Services 1/2 NDPN Medical News ΤϜεϦʔ ΩϟϦΞ Job Recruitment
.3܅ Pharmaceutical Promotion
Our Services 2/2 And over 20 other services σδΧϧ Cloud
Electronic Medical Records "TL%PDUPST Medical Consultation
And over 20 other services σδΧϧ Our Services 2/2 Cloud
Electronic Medical Records "TL%PDUPST Medical Consultation
You Can Ask Doctors 5,900 Doctors 2,000,000 Q&A
Back To the 2005 First release: 2005 (Dec) Now: 2019
(Mar)
Back To the 2005 First release: 2005 (Dec) Now: 2019
(Mar) 13years
Back To the 2005 !!
2019
2015
2011
2005
None
( ).present? (2005) => True -Rails (v.1 Release) -Git (v.1
Release) -PHP 5.0 (Release) -Feature phone
( ).present? (2005) => False -iPhone (2008) -Chrome (2008) -jQuery
(2006)
Tech Stack in 2005 Version Control System => CVS Bug
Tracker => Mantis JS Framework => prototype.js
I have never heard of those (I became an engineer
3 years ago)
We also used Generator, a framework for developing web apps
with xmls. xml…Pardon?
Version Control System 1.CVS 2.SVN (subversion) 3.Git (now!)
Bug Tracker 1.Mantis 2.REDMINE 3.Jira (now!)
JS Framework 1.Prototype 2.jQuery 3.Vue (now!)
App History
App Structure (ancient) Apps PC Smart phone Feature phone For
women DB Java Java Perl Java
Apps Constitution (ancient) Apps PC Smart phone Feature phone For
women DB Java Java Perl Java DB structures are NOT shared.
Historical Background Feature Phone Outsourced to external organizations. For Women
(AskMoon) Launched as a service with a different concept.
New Requirement Let's share content data between services! Sounds good.
PC Smart phone Feature phone For women CoreAPI New! Topic
Q&A Patient Web API
3 years later…
New Requirement We need to develop Views faster. How about
integrating PC with SP? LGTM !
PC & SP Apps Constitution (middle) Apps Feature phone For
women DB New!
Pain Points
New Requirement FP users must also be able to use
PC sites. Right.
Membership integration Apps Feature phone DB PC & SP Insert
User Data
Membership integration Apps Feature phone DB PC & SP Insert
User Data User model has become complicated…
DB has longevity Applications Replaced Replaced Replaced DB is unchanged
Pain Points #2
Back To the 2005 First release: 2005 (Dec) Now: 2019
(Mar) 13years
Version Control System 1.CVS 2.SVN (subversion) 3.Git (now!)
Bug Tracker 1.Mantis 2.REDMINE 3.Jira (now!)
No one knows Is this batch still working? Oh, this
is ten years old. I was a high school student at that time.
History rhymes 1/2 It’s inconvenient if we don't have a
batch list. I made one. It’s all right now.
3 years later…
History rhymes 1/2 It’s inconvenient if we don't have a
batch list. I made one. It’s all right now.
Now batches are consolidated in Digdag.
Get back on track…
PC & SP Apps Constitution (middle) Apps Feature phone For
women DB Stop active development
PC & SP Feature phone For women CoreAPI Web API
Stop active development ……
Problems with CoreAPI 1. Increased volume of coding 2. Data
integrity problem (API transaction) 3. API design difficulties
It’s micro-service !
At that time the best practices were not yet known.
Keyword Trend on Google Keyword: microservice (ϚΠΫϩαʔϏεΞʔΩςΫνϟ) 2014 2016
Keyword Trend on Google Keyword: microservice (ϚΠΫϩαʔϏεΞʔΩςΫνϟ) 2014 CoreAPI 2009
Too many services V1 V2 Askmn CoreAPI Inspection Manage Admin
smartphone Payment Apps developed by our team FP M3com
Let’s reduce V1 V2 Askmn CoreAPI Inspection Manage Admin smartphone
Payment FP Replace and remove M3com
Admin Let’s reduce V1 V2 Askmn CoreAPI Inspection Manage smartphone
Payment FP Stop active development M3com
Admin Let’s reduce V2 Inspection Manage M3com Konmari !
Wait. Why did we have so many services?
Step By Step We cannot replace all systems at once.
Step By Step!
Step By Step, and zombie And zombie services are born.
Step By Step, and zombie The replacement is almost over.
But an old app is still alive.
Step By Step, and zombie Reason 1: 99% complete! But
a few complicated batches are running….
Step By Step, and zombie Reason 2: 99% complete! But
the http server config is complex and we need to leave the redirectors...
Progress of replacement 1 month later: 2 months later: 12
months later: 50% 95% 99%
Nonetheless, the replacement will be over soon. Thank you for
everything! Rest in peace.
Next step ? 2005-2009 : Let's just release anyway! 2009-2017
: Calm down. Let's reorganize.
Next step is SCALING. Env and Application
Background 2009-2017(Reorganize Age) The number of users was flat. And
scalability was not important. But recently we have started offering services for companies.
More users! Surely. Scalability !
Development Env 1. Add E2E tests 2. DB migration (flyway)
3. Consolidate batches (Digdag)
Application 1. Replace Full-text search (Solr => Elasticsearch) 2. Cache
strategy 3. DB ScaleUp 4. Docker
But environmental improvement tends to be postponed… RoI is a
top priority…
Engineer’s Time Within our team, engineers have time to make
technical improvements. Many improvements were made by this system.
Learn the history of your services
History Tells Us 1. How hard our predecessors worked 2.
What was the concept of the service 3. Where we are in history