2019年2月19日 星期二

Day 4 系統開發

簡介

上一篇介紹完 Pyramid 專案之後,接下來說明一下在網頁系統開發的過程中,會歷經幾個步驟,並且各個角色都有不同的任務和工作,DevOps 就是讓整個開發、測試、部署、維運的流程更加地順暢,這邊我們會從開發、測試、部署的過程中,慢慢都串接起來,實作整個CI/CD的過程.

需求分析

  1. 先是需求分析,通常都是PM和客戶訪談之後,建立心智圖,再依據心智圖和客戶確認功能
  2. 依據功能來來區分前台頁面和後端操控系統.

前端系統

  1. 前台頁面會由設計師依據客戶的想法來設計頁面.
  2. 前端畫面設計出來後,會給前端工程師切版,並且選寫前端網頁程式,還有RWD等.

後端系統

  1. 後端操控系統會依據功能來製作頁面,並且和客戶溝通是否正確.
  2. 依據功能後端工程師開始設計資料庫和寫API.
  3. 等後端系統介面設計定稿後,開始串接後端操控系統頁面.
  4. 最後串接前端網頁.
  5. 完成發佈.

QA 測試

  1. 功能測試
  2. 頁面測試
  3. 壓力測試
  4. 資安掃描

部署

  1. 建置
  2. 維運
  3. 監控
以上是我們公司的開發流程,每個人負責一部份專業,大家一起系統做好.雖然上面畫分了很多職缺類別,但是通常會"人力不足",需要一個人身兼數職,像我就是開發兼QA兼MIS,包山包海,就是這樣才想要導入CI/CD可以讓重複的事情自動化,讓我輕鬆一點(偷懶XD).
https://ithelp.ithome.com.tw/upload/images/20181005/20072651U1LQZL0FzT.png

接下來談談接下來要開發的系統

我之前一直有一個想法,想要開發一個簡單的 Mock 系統,使用者來網頁申請一個API和定義回傳規格之後,可以直接使用這個申請好的 API 來使用,會想要開發這個系統是因為有時候在開發時,常常要等前端畫面好了,才有辦法串接,我希望可以都過這樣的 Mock 系統,讓前後端可以先定義好 API 規則,然後各自開發,提升開發效率.
使用者 -> 申請API -> 定義回傳資料 -> 產生 API URL
使用者 呼叫 -> API URL 回傳資料 -> 使用者

2019年2月12日 星期二

Day 3 Pyramid 專案說明

簡介

上一篇創建專案之後,再來是需要在 bitbucket 創建遠端 Repository,並把我們的專案上傳,再來安裝 PyCharm IDE,這個IDE個人覺得很好用,專門為 python 寫的IDE,而且還有免費版本可以使用,非常的佛心,最後會介紹 Pyramid 專案基本的檔案介紹.

bitbucket

bitbucket 個人頁
https://ithelp.ithome.com.tw/upload/images/20181003/20072651Einwj1tZ5n.png
創建專案
https://ithelp.ithome.com.tw/upload/images/20181003/20072651xbCzbnCBQ0.png
Ithome_pellok_2018 專案
https://ithelp.ithome.com.tw/upload/images/20181003/20072651dsqUzMmMeU.png
git 加入 bitbucket 遠端專案,把專案更新到 bitbucket
cd ithome_pellok_2018
git remote add origin https://pellok2002@bitbucket.org/pellok2002/ithome_pellok_2018.git
git push -u origin master

pycharm

目錄區
https://ithelp.ithome.com.tw/upload/images/20181004/20072651kdnbTHRwPw.png
常用功能 向右三角型:執行,爬蟲:為Debug模式執行,基本上開發都是用爬蟲模式
https://ithelp.ithome.com.tw/upload/images/20181004/2007265100VQJG05iy.png
Debug 頁面
https://ithelp.ithome.com.tw/upload/images/20181004/20072651Qznz9hHZsv.png
https://ithelp.ithome.com.tw/upload/images/20181004/20072651PZ8oq1nX49.png

專案說明

基本上 Pyramid 專案已經提供一個完整的網頁 MV C架構,包含 Router Controller、Sqlalchemy ORM、View Template,甚至還有測試功能,以下來介紹專案檔案,讓大家對 pyramid 框架有基礎的暸解.

pip 模組

setup.py : 模組定義檔
CHANGES.txt : 版本更動紀錄
MANIFEST.in : 這個不太清楚XD
README.txt : 讀我

設定檔

development.ini : 開發環境設定檔
production.ini : 正式環境設定檔

程式起始點

ithome_pellok_2018/init.py : 主程式

Sqlalchemy ORM

ithome_pellok_2018.sqlite : DB
ithome_pellok_2018/models/init.py : ORM程式
ithome_pellok_2018/models/meta.py : ORM程式
ithome_pellok_2018/models/mymodel.py : ORM 表定義
ithome_pellok_2018/initializedb.py : 初始化DB程式

Router Controller

ithome_pellok_2018/routes.py : 路由
ithome_pellok_2018/views/default.py : 路由程式
ithome_pellok_2018/views/notfound.py : 404 頁面路由

View Template

ithome_pellok_2018/static/* : 靜態路進檔案
ithome_pellok_2018/templates/404.jinja2 : 404 頁面
ithome_pellok_2018/templates/layout.jinja2 : 樣板基礎頁
ithome_pellok_2018/templates/mytemplate.jinja2 : 首頁

Test

pytest.ini : 測試設定檔
.coveragerc : 覆蓋率報告
ithome_pellok_2018/tests.py : 測試主程式

結論

在這邊每個檔案都有相對應的功能,而且都是很重要的基礎頁面,建議想要暸解的 pyramid 框架的朋友們,一定要搞懂這邊每一個檔案的內容,因為會很長的使用到.

參考

2019年1月20日 星期日

Day 2 起手式

前言

在我們開始寫程式之前,需要有一些前置作業,安裝軟體和設定開發式的環境變數,讓我們開始吧!開發使用 Macbook 的環境,以下會以 Macbook 為主.

安裝 Git

https://ithelp.ithome.com.tw/upload/images/20181002/20072651eG0jSerqYs.png
https://ithelp.ithome.com.tw/upload/images/20181002/20072651bMmSiKKrfI.png
https://ithelp.ithome.com.tw/upload/images/20181002/20072651RsDFjwLWUB.png
https://ithelp.ithome.com.tw/upload/images/20181002/20072651EInBxSaIMQ.png
https://ithelp.ithome.com.tw/upload/images/20181002/20072651UFsvmwMKGU.png
https://ithelp.ithome.com.tw/upload/images/20181002/200726512EAoMG2i8m.png

安裝 pyenv

下載
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
設定環境變數
 echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
 echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
 source ~/.bash_profile
安裝需要用到的 python 版本
 pyenv install 3.5.0
 pyenv global 3.5.0
 python --version

安裝 pyramid

安裝 pyramid 插件
pip install pyramid

創建一個 pyramid 專案

使用指令創建專案,使用 pyramid 的 pcreate 指令來快速產生一個專案,ithome_pellok_2018
預設會有三個 樣板
alchemy: Pyramid project using SQLAlchemy, SQLite, URL dispatch, and Jinja2
starter: Pyramid starter project using URL dispatch and Jinja2
zodb: Pyramid project using ZODB, traversal, and Chameleon
pcreate -s alchemy ithome_pellok_2018
為專案用插件設定一個環境,這邊使用 virtualenv,安裝virtualenv,創建還境變數
pip install virtualenv
cd ithome_pellok_2018
virtualenv env
https://ithelp.ithome.com.tw/upload/images/20181003/20072651YgE0tGlOX9.png
切換到環進設定裡面,並且安裝專案用的插件
source env/bin/activate
python setup.py develop
https://ithelp.ithome.com.tw/upload/images/20181003/200726517nz48QyXF6.png
看到 Finished processing dependencies for ithome-pellok-2018==0.0 代表專案環進設定好了
https://ithelp.ithome.com.tw/upload/images/20181003/20072651kmoScuzbBY.png
儲存插件的版本檔案
pip freeze requestment.txt
創建 DB
deactivate
source env/bin/activate
initialize_ithome_pellok_2018_db development.ini
啟動服務,看到 Serving on http://localhost:6543 代表服務正常啟動
pserve development.ini
https://ithelp.ithome.com.tw/upload/images/20181003/20072651O8RtxBpjy1.png
檢查網頁是否正確開啟,在瀏覽器輸入:http://localhost:6543,看到以下畫面就代表成功了!
https://ithelp.ithome.com.tw/upload/images/20181003/20072651f0QnwAj7aU.png

加入 Git 版控

初始化 git
git init
加入 .gitignore 檔案,讓環境變數和一些環境檔案不要污染git
vim .gitignore
env/*
*.pyc
*egg-info*
.coveragerc
*.sqlite
把程式碼加入版空
git status
git add .
git commit -m "first commit for ithome_pellok_2018"

結論

以上就是我們初始化一個 pyramid 專案,並且加入的 Git 版本控管,在這之中有幾個重點,這些重點都是經驗換來的設定:
  1. 第一個是環境變數pyenv:可以避免多個專案在開發的時候python版本混亂的問題.
  2. 第二個是插件版本問題:當開發程式的過程中,插件會持續在更新,有時候在部屬的時候會安裝到最新的插件,有很大的機率造成軟體開不起來,查到最後常常是因為插件版本有問題,習慣再開發的時候先儲存插件的版本號,也就是requestment.txt檔.
  3. 版本控管的gitignore:在多人開發的時候,避免個人電腦環境互相感染,這也是蠻常遇到的問題.

2019年1月7日 星期一

2019 鐵人賽 Day 1 簡介

什麼是DevOps

DevOps(Development和Operations的組合詞)是一種重視「軟體開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合作的文化、運動或慣例。透過自動化「軟體交付」和「架構變更」的流程,來使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。[1]

我們使用 python pyramid 來開發網頁系統,使用Git & bitbucket 來管理程式碼,使用python unitest、webtest來做Function Test,透過Bitbucket 的 webhook 驅動 Jenkins CI/CD server,並且針對 VM 更新部署腳本來完成基本的 CI/CD 流程.

基本會使用到的工具

  • git&bitbucket
  • pyramid
  • function test
  • postman
  • jmeter
  • jenkins
  • nginx
  • supervisor
  • filebeat
  • logstash
  • elasticsearch
  • kibana

進階使用工具

  • selenium
  • vagrant
  • ansible
  • docker
  • k8s
  • slack
  • chatbot

文章傳送陣






























參考:


台灣人工智慧學校第四屆開學典禮

台灣人工智慧學校  第四屆 開學典禮       今天 AI 學校開學,非常特別像參加研討會一樣,開場介紹孔祥重校長和陳昇瑋執行長為什麼會創建這間學校,主要是他們發現AI技術可以幫助產業界解決很多問題,但是人才問題嚴重,希望透過一年三期每期500左右的規模並在北中南都有分校,來...