顯示具有 ◇DevOps 標籤的文章。 顯示所有文章
顯示具有 ◇DevOps 標籤的文章。 顯示所有文章

2023年12月9日 星期六

IT 數位轉型 (IT Digital Transformation)

.


.
這幾年的 IT 數位轉型 (IT Digital Transformation) 持續發燒與演進.

1. 由傳統的 Physical Machine -> Virtual Server (VM) 發展到熱門的 K8S (Kubernetes) Container. + CI/CD Pipeline.

2. Serverless 雲端服務 (Cloud Service Models) 的演進:
   地端(On-Promise) to Cloud Service.
   IaaS (Infrastrcture as a Service) 基礎設施即服務: e.g. Google GCP, AWS EC2, Azure VM
   PaaS (Platform as a Service) 平台即服務: e.g. Pivotal Cloud Foundry (PCF), Red Hat OpenShift (OKD)
   SaaS (Software as a Service) 軟體即服務: e.g. Salesforce, Netflix, Spotify

3. DevOps and DevSecOps 的興起:
    Under a DevOps model, development and operations teams are no longer “siloed.” Sometimes, these two teams are merged into a single team where the engineers work across the entire application lifecycle, from development and test to deployment to operations, and develop a range of skills not limited to a single function.
    在 DevOps 模型之下,開發與營運團隊不再「孤軍奮戰。」 有時,這兩個團隊會合併成為一個團隊,讓工程師負責整個應用程式生命週期中的工作,包含從開發和測試、部署以及營運,並發展出許多不限於單一功能的技能。

=> 學學 Azure GitOps, Gitlab, Github, Docker, Harbor, Helm, K8S (Kubernetes), CI/CD (Continuous Integration / Continuous Delivery or Continuous Deployment), ymal, AI, ML, AI-Ops, AI-ChatBot ...

4. 網站可靠性工程 SRE (Site Reliability Engineering):
    Site reliability engineering (SRE) is the practice of using software tools to automate IT infrastructure tasks such as system management and application monitoring. Organizations use SRE to ensure their software applications remain reliable amidst frequent updates from development teams. SRE especially improves the reliability of scalable software systems because managing a large system using software is more sustainable than manually managing hundreds of machines. 
    網站可靠性工程(SRE)是使用軟件工具自動化 IT 基礎架構任務(例如系統管理和應用程序監控)的實踐。組織使用 SRE 確保其軟體應用程式在開發團隊的頻繁更新中保持可靠性。SRE 特別提高了可擴展軟件系統的可靠性,因為使用軟件管理大型系統比手動管理數百台機器更具可持續性。
=> + Resilience, + Observability



5. 軟體開發 (Software development) PM, SA, SD, QA -> Coding, Developer, Programming
    每天下班跟假日都要來一點 HackerRank, LeetCode 練練功.
    後端(Back-end), 前端(Front-end), 全端(Full-stack).
    Pythonic!
    JavaScript, TypeScript, MEAN (MongoDB, Express.js, Angular, Node.js), MERN (MongoDB, Express.js, React, Node.js)
    Golang,
    


6. Globalization (English):
    每天下班跟假日都要 聽多一點英文, 多說一點英文一點英文, 一點英文.


// End

2023年1月8日 星期日

docker 之獨孤九劍

...


... ... ...

docker 之獨孤九劍

... ... ...


1. install Docker Desktop:

refer to: https://docs.docker.com/desktop/

$ docker info
$ docker run hello-world

.

2. Docker Images to Containers

// List images
// Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker images

// docker run: Run a command in a new container
// Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
// docker run -ti: terminal interactive (可互動模式)
$ docker run -ti ubuntu:latest bash

// List containers
// Usage:  docker ps [OPTIONS]
$ docker ps

// List containers -all
$ docker ps -a

// List containers -latest
// Show the latest created container (includes all states): 列出最後 created 的 container, 通常用於看不正常關閉的 container
$ docker ps -l
.

3. Docker Containers to Images (docker commit)

docker run -ti ubuntu:latest bash
# touch AaA_IMAGE_V2
docker ps -l
docker images

// docker commit: Create a new image from a container's changes
// Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
docker commit  3597f6ac186f  ubuntu-test:2.0
等同於
// docker tag: Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
// Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
$ docker tag 0eb2c4ef97cd05e22d316195efdeb908289b0bf1aa8adf157da4955c00e8e505 ubuntu-test:2.0

// Verify
docker run -ti  ubuntu-test:2.0 bash
.

4. Docker run

// docker run --rm : Automatically remove the container when it exits (若 exit; 自動移除 container)
docker run --rm -ti ubuntu-test:2.0  sleep 5

docker run -ti ubuntu bash -c "sleep 3; echo all done"

// docker run -d: --detach Run container in background and print container ID
// [AaA]: 就是類似 nohup 的概念, 在背景執行.
docker run -d -ti ubuntu bash

docker ps
// 從 detach 恢復到 attach mode
docker attach lucid_rosalind

// [AaA]:密技 亦可以在 terminal 按 Ctrl+p Ctrl+q 達到 detach 的境界
.

5. Docker exec

// docker exec: Run a command in a running container; 通常用於 debug & DBA administration
// Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

$ docker exec -ti lucid_rosalind bash
// or 

docker exec -ti lucid_rosalind cat test.txt
.

6. Docker logs

// docker logs: Fetch the logs of a container
// Usage:  docker logs [OPTIONS] CONTAINER

// 範例把 cat 打錯成 catt
docker run --name example -d ubuntu bash -c "catt /etc/passwd"

docker logs example
bash: line 1: catt: command not found
.

7. Stopping and Removing Containers

docker run -ti ubuntu bash


// docker kill: Kill one or more running containers
// Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER...]
docker ps
docker kill cranky_lamarr

// docker rm: Remove one or more containers (對正在 running 的 container 無效, 必須先 kill 再 rm)
// Usage:  docker rm [OPTIONS] CONTAINER [CONTAINER...]
docker rm cranky_lamarr

.
// 移除 images 的指令:
// docker rmi: Remove one or more images
// Usage:  docker rmi [OPTIONS] IMAGE [IMAGE...]
.

8. Exposing ports: docker port

// docker run -p outside-port:inside-port/protocol (tcp/udp)

// docker port: List port mappings or a specific mapping for the container
// Usage:  docker port CONTAINER [PRIVATE_PORT[/PROTO]]
docker run --rm -ti -p 12345:12345 -p 12346:12346 --name echo-server ubuntu:14.04 bash

docker port echo-server
12345/tcp -> 0.0.0.0:12345
12346/tcp -> 0.0.0.0:12346

在第一視窗 listen port 12345 & 12346
nc -lp 12345 | nc -lp 12346

在第二視窗
$ docker run --rm -ti ubuntu:14.04 bash
nc host.docker.internal 12345

在第三視窗
docker run --rm -ti ubuntu:14.04 bash
nc host.docker.internal 12346
.
// [AaA]: 若前面不指定 outside-port, 則會隨機作 port mapping dynamically
.
// UDP example
docker run --rm -ti -p 23456:23456/udp --name echo-server ubuntu:14.04 bash

在第一視窗
nc -ulp 23456

在第二視窗
docker ps
docker port echo-server
docker run --rm -ti ubuntu:14.04 bash
nc -u host.docker.internal 23456
.

9. 無招勝有招 docker --help

.
.
.
// End.

2022年6月18日 星期六

SRE, DevOps, K8S, MicroServices, MERN, MongoDB, Domain-Driven Design (DDD)

..
.
1. SRE = Site Reliability Engineering = 網站可靠性工程師 (from Google) 
.


2. DevOps = Dev + Ops
.
SRE is a DevOps.
DevOps is NOT a SRE.
DevOps 並不是一個 "工作職稱",SRE 才是。
.


3. K8S = Kubernetes 是一個可以幫助我們管理微服務(microservices)的系統,他可以自動化地部署及管理多台機器上的多個容器(Container)。
.


4. MicroServices (微服務) : 是一種開發軟體的方法, 有別於 單體式架構(monolithic)。
.


5. MERN = MongoDB, Express.js, React and Node.js
用於開發動態網站和網路應用的 JavaScript 套件組合。它是自由及開放原始碼軟體。
MERN Stack 包含 前端 及 後端. 所以我們又稱 全端。
.


6. MongoDB :
是一種文件導向的資料庫管理系統,用C++等語言撰寫而成,以解決應用程式開發社群中的大量現實問題。MongoDB 由 MongoDB Inc. 於2007年10月開發,2009年2月首度推出,現以伺服器端公共授權(SSPL)分發。
.


7. Domain-Driven Design 領域驅動設計(DDD) :
is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain. The name comes from a 2003 book by Eric Evans that describes the approach through a catalog of patterns.

Domain-Driven Design 領域驅動設計(DDD) 是一種基於領域知識來解決複雜商業問題的軟體開發方法論。
.


...


// 2022.06.18(六) AaA