รู้จักคนเบื้องหลังระบบ

ADAPTER877.

งานระบบ / ระบบอัตโนมัติ / GitOps

ผมใช้ชื่อ Adapter877 เพราะอยากให้สิ่งที่ทำพูดแทนตัวเอง สนุกกับการดูแลระบบ เข้าใจสิ่งที่อยู่เบื้องหลัง และเรียนรู้ผ่านการลงมือทำ

ที่นี่รวบรวมเครื่องมือที่ผมใช้ ประสบการณ์จากการทำโปรเจกต์ และแนวทางที่ทำให้ระบบทำงานได้อย่างเป็นขั้นตอน

หมวดทักษะ
07หมวด
เครื่องมือที่ใช้งาน
21เครื่องมือ
คลังโค้ดสาธารณะ
04โปรเจกต์
Adapter877 กำลังทำงานอยู่หน้าตู้แร็คเซิร์ฟเวอร์
เบื้องหลังการทำงาน
ADAPTER877

ลงมือทำ เข้าใจระบบ
แล้วพัฒนาให้ดีขึ้น.

01 / หน้างานจริงห้องแร็คและระบบที่ดูแล

สิ่งที่ใช้ และสิ่งที่ทำ.

จากเซิร์ฟเวอร์ไปจนถึงหน้าเว็บ
เลือกดูรายละเอียดของแต่ละหมวดได้เลยครับ

01 / 07

เซิร์ฟเวอร์และเวอร์ชวลไลเซชัน

ชั้นล่างสุดที่ทุกอย่างวางอยู่บน

  • Proxmox
  • Linux
  • Self-hosted runner
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • Proxmox

    สร้างและดูแลเครื่องเสมือนกับคอนเทนเนอร์บนเซิร์ฟเวอร์ของตัวเอง

  • Linux

    ดูแลเครื่องตระกูล Debian ที่รันบริการจริง ตั้งแต่ติดตั้งจนถึงแก้ปัญหาหน้างาน

  • Self-hosted runner

    วางเครื่องรับงาน build ของตัวเองให้ไปป์ไลน์เรียกใช้

02 / 07

คอนเทนเนอร์

ห่อระบบให้ย้ายไปรันที่ไหนก็ได้

  • Docker
  • Docker Compose
  • GHCR
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • Docker

    เขียน Dockerfile เอง ทั้งแบบ multi-stage และแบบคอมไพล์ส่วนขยายเพิ่ม

  • Docker Compose

    ประกอบหลายบริการให้ทำงานร่วมกันในเครื่องเดียว

  • GHCR

    เก็บและดึงอิมเมจผ่าน GitHub Container Registry

03 / 07

Kubernetes และ GitOps

ให้ Git เป็นแหล่งความจริงเดียว

  • Kubernetes
  • ArgoCD
  • nginx Ingress
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • Kubernetes

    เขียน Deployment, Service และ Ingress พร้อมกำหนด requests และ limits

  • ArgoCD

    ซิงก์สถานะจริงบนคลัสเตอร์ให้ตรงกับ manifest ที่อยู่ใน Git

  • nginx Ingress

    จัดเส้นทางเข้าเว็บด้วย host และ rewrite-target

04 / 07

CI/CD

พุชครั้งเดียว ที่เหลือระบบจัดการเอง

  • GitHub Actions
  • GitLab CI
  • Git
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • GitHub Actions

    สร้าง workflow บน self-hosted runner ตั้งแต่ build จนถึง push อิมเมจ

  • GitLab CI

    วางไปป์ไลน์ด้วยไฟล์ .gitlab-ci.yml สำหรับโปรเจกต์ที่อยู่บน GitLab

  • Git

    ใช้เป็นจุดตั้งต้นของทั้งโค้ดและคอนฟิกของระบบ

05 / 07

สั่งงานเครื่องด้วยโค้ด

เลิกไล่ตั้งค่าทีละเครื่อง

  • Ansible
  • Python
  • Shell
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • Ansible

    เขียน playbook จัดการคอนฟิกหลายเครื่องพร้อมกันให้ผลลัพธ์เหมือนกันทุกครั้ง

  • Python

    เขียนสคริปต์งานอัตโนมัติและเครื่องมือเล็ก ๆ ไว้ใช้เอง

  • Shell

    เขียนสคริปต์จัดการไฟล์บันทึกและพื้นที่จัดเก็บให้ทำงานเอง

06 / 07

เว็บเซิร์ฟเวอร์และแพลตฟอร์ม

ชั้นที่รับคนเข้ามาจริง

  • nginx
  • Apache
  • Cloudflare
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • nginx

    ตั้งค่าแคชแยกตามชนิดไฟล์ และเปิดเส้นทางสำหรับตรวจสุขภาพระบบ

  • Apache

    ตั้ง virtual host และเปิด mod_rewrite ให้รองรับเส้นทางแบบสวยงาม

  • Cloudflare

    ใช้ Workers และ Pages เสิร์ฟเว็บนี้ผ่านเครือข่ายทั่วโลก

07 / 07

เว็บและการแสดงผลข้อมูล

ทำให้ข้อมูลอ่านรู้เรื่อง

  • Astro
  • Next.js กับ TypeScript
  • HTML กับ CSS
ดูรายละเอียดการใช้งานซ่อนรายละเอียด
  • Astro

    เว็บที่คุณกำลังอ่านอยู่นี้ สร้างแบบสแตติกล้วนด้วย Astro

  • Next.js กับ TypeScript

    แดชบอร์ดสภาพอากาศและ PM2.5 ที่ดึงข้อมูลจาก Open-Meteo

  • HTML กับ CSS

    จัดโครงหน้าและเขียนสไตล์เอง ไม่พึ่งชุดสำเร็จรูป

กำลังเรียนรู้

ยังมีอะไรให้เรียนรู้อีกเสมอ.

สิ่งที่อยู่ระหว่างทดลองและศึกษาเพิ่มเติม เพื่อค่อย ๆ ต่อยอดจากพื้นฐานที่มี

  • Django
ความสงสัย คือจุดเริ่มต้นของสิ่งใหม่ ↗

จากคอมมิต ถึงผู้ใช้.

เส้นทางการทำงานที่เชื่อมโค้ด
เข้ากับระบบที่พร้อมให้บริการ

  1. 01

    git push

    ส่งโค้ดขึ้นเบรนช์หลัก จุดเริ่มต้นของทุกอย่างคือคอมมิตเดียว

  2. 02

    GitHub Actions

    workflow ทำงานบน self-hosted runner ที่ดูแลเอง ไม่ใช่เครื่องสำเร็จรูป

  3. 03

    docker build

    สร้างอิมเมจด้วย Buildx แล้วติดแท็กตามเบรนช์ที่พุชเข้ามา

  4. 04

    GHCR

    ผลักอิมเมจขึ้น GitHub Container Registry ด้วยสิทธิ์แบบจำกัดขอบเขต

  5. 05

    ArgoCD

    ตรวจพบว่า manifest ใน Git เปลี่ยน แล้วซิงก์ขึ้นคลัสเตอร์ให้เอง

  6. 06

    Kubernetes

    Deployment สร้างพ็อดตามจำนวนที่กำหนด คุมทั้ง requests และ limits

  7. 07

    Ingress

    nginx รับทราฟฟิกจากภายนอก แล้วส่งต่อเข้า Service ภายใน

มีเรื่องระบบ
มาแลกเปลี่ยนกัน.

สนใจเรื่อง Infra มีโปรเจกต์ที่อยากเล่า
หรืออยากทำความรู้จัก ทักมาได้เลยครับ

GitHub@Adapter877คลังโค้ดสาธารณะ และที่ที่ผมใช้เวลาอยู่มากที่สุด