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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
LINE Developers Taiwan
PRO
October 17, 2023
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
淺談開發與DevOps
Speaker: Eric Huang
Event: APCS camp 企業參訪
LINE Developers Taiwan
PRO
October 17, 2023
More Decks by LINE Developers Taiwan
See All by LINE Developers Taiwan
Building applications in the Gemini API family.
line_developers_tw
PRO
0
2.1k
20260514 - build with ai 2026 - build LINE Bot with Gemini CLI
line_developers_tw
PRO
0
500
2026.04.09_台灣客服協會_從資料重新理解客服_ Charlie Wang
line_developers_tw
PRO
0
53
Zona 台北大學 GDG 分享
line_developers_tw
PRO
0
81k
台大資料分析與決策社 機器學習的商業應用_Rei
line_developers_tw
PRO
0
38
政大數據分析社 機器學習的商業應用_Rei
line_developers_tw
PRO
0
67
Gemini 2025 新功能回顧 LINE Bot 完美結合
line_developers_tw
PRO
0
660
NTUAI企業參訪
line_developers_tw
PRO
0
26k
Data TECH FRESH企業參訪- Amber
line_developers_tw
PRO
0
56k
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Are puppies a ranking factor?
jonoalderson
1
3.5k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
160
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
sira's awesome portfolio website redesign presentation
elsirapls
0
270
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
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