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
淺談開發與DevOps
Search
LINE Developers Taiwan
PRO
October 17, 2023
0
320
淺談開發與DevOps
Speaker: Eric Huang
Event: APCS camp 企業參訪
LINE Developers Taiwan
PRO
October 17, 2023
Tweet
Share
More Decks by LINE Developers Taiwan
See All by LINE Developers Taiwan
清大企業參訪- Ben
line_developers_tw
PRO
0
1
LLM 商品規格萃取大冒險- Vila
line_developers_tw
PRO
0
49
Playwright/MCP/AI -Winter
line_developers_tw
PRO
0
48
LINE EC Product Catalog Development- Rei
line_developers_tw
PRO
0
48
LINE 與 AI 機器人技術應用現況
line_developers_tw
PRO
0
7
QA Testing
line_developers_tw
PRO
0
90
jcconf_datadev_prod
line_developers_tw
PRO
0
7
jcconf_SPM_prod
line_developers_tw
PRO
0
5
jcconf_LINEPay_prod
line_developers_tw
PRO
0
4
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
225
10k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Done Done
chrislema
185
16k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Code Review Best Practice
trishagee
72
19k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
Code Reviewing Like a Champion
maltzj
526
40k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Scaling GitHub
holman
463
140k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Transcript
淺談開發與 DevOps
01 02 03 04 確保開發環境跟部署環境 ⾃⾝經驗分享 開發 確保部署的自動化及穩定性 DevOps 開發經驗問題
05 Q&A CONTENT
01 開發經驗問題
問題 1. 有開發程式並給別⼈使⽤經驗嗎? 2. 這些程式如何部署的? 3. 有沒有團隊開發過?
02 ⾃⾝經驗分享
Eric Huang SRE 2020 年份 : 台積電 2021 年份 :
⽟⼭銀⾏ 2022 年份 : LINE
經驗分享 • 在交⼤資⼯系計中曾擔任過助教 • 有過些許的open source開發經驗
03 開發
有沒有遇過... 1. 怎麼在我電腦跑起來沒問題,到了部署環境卻出事... ◦ 確保開發環境跟部署環境 2. 明明我的電腦可以順利跑,到了你的電腦卻有問題... ◦ 確保團隊的開發環境一致性
確保開發環境跟部署環境 • ⼤家都配Mac開發就沒這困擾 • 絕⼤部分的app都是被部署到Linux系統上,何不⼀開始就在Linux上開發? • 在OS上跑Linux的VM開發 • 在OS跑開發專⽤的container (e.g.,
Docker)
container簡介 • container可以視為⼀種輕量級的app,運⾏在OS之上 • 主流的container runtime (負責掌管container的manager,例如:Docker及 containerd)都⽀援MacOS, Linux及Windows •
container底層是⽤Linux kernel的技術實現,做到環境隔離以及資源限制 • container可以預先安裝開發需要使⽤的的library, CLI等,也可以獨立運⾏app • 被⼤量使⽤在開發以及部署當中,為cloud native的基礎
Dockerfile 範例 FROM python:3.11-buster WORKDIR /app COPY requirements.txt ./ RUN
pip install --no-cache-dir -r requirements.txt --user COPY . /app CMD [ "python", "app.py" ]
container好處多多,但不是萬能 • container只能解決app內部環境問題 • 如果需要跟外部溝通(DB, API等),就要確保container runtime的本機上的設定也⼀樣。 實際案例: • container的DNS
resolve 如果host上的DNS name server不⼀樣就會有問題
04 DevOps
有沒有遇過... 1. 很喜歡開發,但到了要部署程式⼀切都要⾃⼰來,深怕少⼀些步驟 ◦ 確保部署(CD)的自動化及穩定性 2. 部署之前想要跑⼀些測試,如果ok再進版,但每次都忘記跑 ◦ 自動整合(CI)的設計與實作
確保部署的⾃動化及穩定性 • 本地端build好程式,搬到機器上再設定環境跑起來 • 寫腳本登機器部署程式,例如Ansible • 利⽤Gitlab及GitHub的CI/CD⼯具在runner上協助部署
便宜有效的CI/CD⼯具 • GitHub及Gitlab提供價格實惠,甚⾄免費的⽅式,讓開發者可以⾃由定義流程,決 定CI/CD各個階段該做的事 • 通常⽤YAML定義⼯作流程,可以做到lint, test, build及deploy等⾃動化流程 • CI/CD的runner可以是cloud,也可以是self-hosted
runner
pipeline範例 steps: - name: Checkout uses: actions/checkout@v3 - name: Login
to Harbor registry uses: docker/login-action@v2 with: registry: ${{ env.DOCKER_REGISTRY }} username: ${{ secrets.HARBOR_ACCOUNT }} password: ${{ secrets.HARBOR_PASSWORD }}
pipeline範例(cont’d) - name: Docker meta id: meta uses: docker/metadata-action@v4 with:
images: ${{ env.DOCKER_IMAGE_REPO }} - name: Build the Docker image uses: docker/build-push-action@v4 with: context: . file: Dockerfile push: true tags: | ${{ env.DOCKER_IMAGE_REPO }}/slackio-bot:${{ github.ref_name }}
05 Q&A
None