เทคโนโลยีของ cutty.dev — การเลือกอย่างมีสติ
เบื้องหลัง cutty.dev คืออะไร และทำไม จึงเลือกแนวทางนี้ โดยไม่มีการโปรโมตเกินจริง: ปรัชญาของระบบที่เรียบง่ายและเสถียร โฮสต์ในสหภาพยุโรป และความเป็นส่วนตัวที่ถูกออกแบบมาให้อยู่ในโครงสร้างพื้นฐาน ซึ่งบุคคลคนเดียวสามารถดูแลรักษาได้
บทความส่วนใหญ่ในหัวข้อ “tech stack ของฉัน” มักเป็นรายการอวดอ้างถึงเทคโนโลยีใหม่ล่าสุด แต่บทความนี้พูดถึงสิ่งอื่น — นั่นคือ ปรัชญา ที่อยู่เบื้องหลังการตัดสินใจของ cutty.dev: เลือกความน่าเบื่อและความเสถียรแทนที่จะตามกระแส, เลือกแนวทางแบบยุโรปแทนอเมริกัน, เน้นความเป็นส่วนตัวโดยพื้นฐาน, และเรียบง่ายพอที่บุคคลคนเดียวจะสามารถดูแลรักษาได้
เฟรมเวิร์ก: Astro (การเรนเดอร์ฝั่งเซิร์ฟเวอร์)
cutty.dev เป็นแอปพลิเคชัน Astro ที่เรนเดอร์ทางฝั่งเซิร์ฟเวอร์ ทุกคำขอจะถูกส่งไปยังเซิร์ฟเวอร์ ซึ่งจะสร้างหน้าเว็บแบบไดนามิกและส่งกลับเป็น HTML ที่พร้อมใช้งาน
เหตุผล: ผมต้องการการเรนเดอร์ฝั่งเซิร์ฟเวอร์โดยไม่ต้องพึ่งพาโครงสร้างพื้นฐานที่ซับซ้อน มีระบบรองรับหลายภาษาในตัวเฟรมเวิร์ก และมีความเร็วโดยไม่มีโอเวอร์เฮด Astro ให้สิ่งเหล่านี้ทั้งหมด และโค้ดยังคงอ่านง่าย ซึ่งสำหรับโปรเจกต์ที่ทำคนเดียวแล้ว สิ่งนี้มีค่ามากกว่าฟีเจอร์ฮอตใด ๆ
ฐานข้อมูล: SQLite
ฐานข้อมูลหนึ่งฐาน ไฟล์หนึ่งไฟล์ พร้อมชั้นการสอบถามที่ใช้งานร่วมกับ TypeScript ได้อย่างราบรื่น ทำให้เมื่อมีการเปลี่ยนแปลงโครงสร้างข้อมูล ข้อผิดพลาดจะปรากฏในระหว่างการพัฒนาโค้ดทันที แทนที่จะพบปัญหาในสภาพแวดล้อมการผลิต
เหตุผล: cutty.dev เป็นเว็บไซต์ที่เน้นการอ่านเป็นหลัก — การคลิกแต่ละครั้งคือการอ่านข้อมูลและการเพิ่มตัวนับ SQLite ทำงานได้ดีเยี่ยมกับปริมาณการเข้าชมจำนวนมากต่อวัน การสำรองข้อมูลทำได้เพียงคัดลอกไฟล์เดียว — ไม่มีขั้นตอนการจำลองข้อมูลที่ซับซ้อน หรือสคริปต์ที่ยากลำบาก ความเรียบง่ายในที่นี้ไม่ใช่การลดทอนคุณภาพ แต่เป็นการตัดสินใจอย่างมีสติว่าชิ้นส่วนที่เคลื่อนไหวน้อยลงหมายถึงสิ่งที่จะพังทลายได้น้อยลง
การโฮสต์: เซิร์ฟเวอร์ในสหภาพยุโรป
เซิร์ฟเวอร์เฉพาะในสหภาพยุโรป ใบรับรอง TLS ของตนเอง โปรxies กลับพร้อม HTTPS อัตโนมัติ แอปพลิเคชันแบบคอนเทนเนอร์
ทำไม: นี่คือพื้นฐานของวิธีการที่ cutty.dev จัดการกับข้อมูล การควบคุมตำแหน่งที่เก็บข้อมูลอย่างสมบูรณ์ (ซึ่งสำคัญสำหรับลูกค้าในสหภาพยุโรปและ GDPR) ไม่พึ่งพาผู้ให้บริการรายเดียว ไม่มีกระบวนการทำซ้ำข้อมูลอัตโนมัติไปยังสหรัฐอเมริกาตามที่แพลตฟอร์มคลาวด์ขนาดใหญ่ให้ไว้ และต้นทุนที่คาดการณ์ได้ แทนที่จะเป็นค่าใช้จ่ายที่ขึ้นอยู่กับปริมาณการใช้งาน แพลตฟอร์มตะวันตกที่ใช้งานง่ายอาจช่วยให้เริ่มต้นได้เร็วขึ้น แต่แลกมาด้วยตำแหน่งทางกายภาพที่ข้อมูลของผู้ใช้ของคุณจะถูกจัดเก็บ
การแปล: โมเดล AI ในเครื่อง
cutty.dev รองรับ 25 ภาษา และทำการแปลด้วย โมเดล AI แบบโอเพนซอร์สที่ทำงานในเครื่อง ซึ่งรันบนโครงสร้างพื้นฐานของเราเอง
เหตุผล: ไม่มีข้อความใดจากอินเทอร์เฟซที่หลุดออกสู่ภายนอก — เราไม่ส่งข้อมูลไปยังผู้ให้บริการ AI ภายนอกใดๆ สิ่งนี้มาพร้อมกับต้นทุนเป็นศูนย์ต่อการแปลหนึ่งครั้ง และการควบคุมคุณภาพอย่างเต็มที่: เราสามารถปรับปรุงเนื้อหาใหม่ได้ whenever we want การแปลด้วยเครื่องจำเป็นต้องมีการตรวจสอบโดยมนุษย์เสมอ — และทุกภาษาผ่านการตรวจสอบดังกล่าวแล้ว — แต่การดำเนินการภายในองค์กรหมายความว่าความเป็นส่วนตัวไม่ใช่ตัวเลือกในราคาบริการ แต่เป็นคุณสมบัติพื้นฐานของสถาปัตยกรรม
CSS: แบบใช้ utility (Tailwind)
ระบบสไตล์เดียว ไม่มี CSS-in-JS ไม่มีไฟล์สไตล์แยกต่างหาก ทุกอย่างอยู่ในเทมเพลตโดยตรง
เหตุผล: ความเร็วในการวนซ้ำ ฉันไม่เสียเวลาไปกับการคิดชื่อคลาส และสไตล์ที่ไม่ได้ใช้ก็ไม่ถูกนำไปใช้ในหน้าเว็บสุดท้าย การออกแบบที่สอดคล้องกันถูกบังคับโดยระบบเอง สำหรับบุคคลหนึ่ง นาทีทุกนาทีที่ไม่ได้ใช้เวลาไปกับเรื่องข้างเคียงนั้นสำคัญ
การติดตั้ง: คอนเทนเนอร์
แอปพลิเคชันในคอนเทนเนอร์ (Docker) ที่ถูกปรับใช้แบบซ้ำได้และพกพาได้
เหตุผล: สภาพแวดล้อมเดียวกันทั้งในเครื่องท้องถิ่นและระบบผลิต ขาดคำแก้ตัวว่า “ที่เครื่องฉันทำงานได้” และมีความสามารถในการย้ายทั้งหมดไปยังเซิร์ฟเวอร์อื่นภายในครึ่งชั่วโมง หากมีความจำเป็น การพกพาได้คือรูปแบบหนึ่งของอิสรภาพ
สิ่งนี้สอนอะไรฉัน
- Stack ที่ดูน่าเบื่อคือผู้ชนะ Astro, SQLite, Tailwind และคอนเทนเนอร์ — ทุกอย่างมีความสุกแก่ มีเอกสารประกอบที่ดี และเสถียร ไม่มีอะไรพังในเวลาที่คาดไม่ถึง
- การโฮสต์ในสหภาพยุโรปพร้อมสำหรับการใช้งานจริง ความเชื่อที่ว่า "คุณต้องใช้บริการคลาวด์ยักษ์ใหญ่ของอเมริกาเพื่อให้ดูจริงจัง" เป็นเพียงความเชื่อที่ผิดๆ
- AI ในเครื่องเป็นเรื่องที่เป็นไปได้ ไม่จำเป็นต้องส่งข้อมูลของคุณไปยัง API ภายนอกเพื่อรับคำแปลที่ดี
- คนคนเดียวสามารถปล่อยผลงานที่ดูเหมือนทำโดยทีมได้ เวลาเป็นทรัพยากรที่มีค่ามากกว่าเงิน ดังนั้นการตัดสินใจทุกประการในที่นี้จึงมุ่งปกป้องเวลา
ดูสดๆ คำถามเกี่ยวกับแนวทางทางเทคนิค — hello@cutty.dev ผมตอบภายในวันเดียวกัน