4 ข้อแรก จาก 12-Factor App ที่ใช้อธิบายหลักปฏิบัติ ในการทำ Microservices

  1. Code base
    🚀 1.1 กรุณาทำ Single Repo (ซิงเกิ้ล เรโป) ถ้าหลาย เรโป ขอให้เรียก distributed system in app
    ⛵️ 1.2 กรณีใช้ code ชุดเดียวซ้ำกันในหลาย app ให้ใช้ dependency manager
    คือทำให้มันเป็น package ที่คนอื่นดูดไป install ได้
    🎠 1.3 ต่อจาก ข้อ 1.2 คือ เวลาที่เรา deploy code นั้นไป ก็ต้องดูได้นะ ว่า code นี้คือ version ไหน
  2. Dependencies
    ควรแยกส่วนประกาศ Dependency และ แยก environment ได้ด้วย
    🍰 2.1 การประกาศ Dependency (Dependency Declaration)
    เช่น npm, requirement.txt+pip ที่จะมีรายการว่าเราต้องใช้ library อะไรบ้าง
    🎸 2.2 Dependency isolation คือ ตอนที่เอามา install 🍓 เรา install แยก environment ได้ เช่น
  3. Config
    เก็บ config พวกนี้ไว้ใน environment
    1) Resource handle เช่น URL ปลายทางที่ใช้เก็บ รูป
    2) Credentials to external services เช่น username / API token ที่ใช้ เวลาไปเรียก Log servicer
    3) Per-Deploy value เช่น Canonical Hostname
    โดยที่ควรจะตั้งชื่อ group ตามชื่อ deploy เช่น ใช้ชื่อ local-machine หรือ development, test, UAT, production อะไรแบบนี้
  4. Backing services
    การทำงานที่เป็นส่วนเสริมใด ๆ ที่ใช้ผ่านระบบเครือข่าย เช่น ๆ
    Datastore (พวก data ทั้งหลาย อย่าง MySQL, CouchDB)
    หรือ
    Messaging/Queueing (อย่างพวก RabbitMQ หรือ Beanstalkd)
    หรือ
    บริการ SMTP (อย่าง Postfix)
    หรือ
    ระบ Caching (เช่น Memcached)
    การทำงานส่วนเสริมที่ sys admin ของเราจัดการเอง
    หรือ
    ระบบการจัดการที่ใช้บริการคนอื่นก็รวมด้วย(แบบว่าไปใช้บริการคนอื่น เช่น Amazon S3 หรือ ไปเรียก API อีกทีอย่าง Twitter, Google Maps)
    ซึ่งเราสามารถมองของพวกนี้เป็น Resource ที่ถูก attach ถูกเอาไปใช้กับ app ของเรา (เหมือนการจ้างบริษัทจัดหาแม่บ้านมาทำความสะอาดออฟฟิศง่ะ)
    ดังนั้น เราจะใช้เซอร์วิสยี่ห้อไหน ก็ให้ปรับค่าใน config ได้โดยไม่ต้องไปนั่งแก้โค้ด
รถแมคโคร ไม่มีไร เห็นเสียงคล้าย ไมโคร เซอร์วิส

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store