ทำไมถึงมาทำ Infra?

วันนี้มีน้องถามว่า “ทำไมถึงมาทำ Infra?”

ภาษาแรกที่เขียนจริงจังคือ PHP ซึ่งสมัยนั้น shared hosting เป็นที่นิยมมาก จนกระทั่งประมาณปี 2008 ที่ Ruby on Rails กำลังเริ่มมามากๆ ก็เลยตัดสินใจเรียน Python (ตึ่งโป๊ะ)

เหตุผลที่เลือกเรียน Python ตอนนั้นคือ

  1. PHP Framework ยังไม่มีตัวไหนถูกใจ (ตอนนั้นตัวที่นิยมน่าจะมี Yii กับ CakePHP) ก็ต้องรออีกหลายปีก่อนที่ Laravel จะมา
  2. ตอนนั้นเขียนโค้ดห่วยมากเลยคิดว่าการเขียน Python จะบังคับให้เราหัด coding style ให้เรียบร้อย

ตอนนั้นก็เริ่มเห็นแล้วว่าเราจะเอา Python ไปลง shared hosting ไม่ได้ ก็คงต้อง manage server เองได้แล้ว โชคดีว่าที่บ้านสนับสนุนให้มี home server ด้วย ก็เลยมีเครื่องให้ใช้ เพราะยุคนั้นยังไม่มี VPS ราคาถูกแบบ DigitalOcean ในปัจจุบัน

เชื่อว่าเหตุผลนี้ก็ทำให้หลายคนเข้ามาสนใจ infra เพราะว่าทำของเสร็จแล้วจะต้อง deploy ก็เลยต้องมาหัด

Unlock your design

การที่เราทำ infra เป็นนี่มันมี benefit คือมันปลดล็อคข้อจำกัดในการ design ระบบของเรา

สมัยนั้นเราอาจจะเคยได้ยินเทคโนโลยีล้ำๆ แต่มันรู้สึกเป็นของขึ้นหิ้งจับต้องไม่ได้เลย เช่น PostgreSQL, Memcache, RabbitMQ, Riak, Sphinx เป็นต้น พวกนี้เคยได้ยินชื่อมาแล้วก็ได้แต่มองไม่มีโอกาสได้ใช้

พอเรา deploy เองเป็นแล้วมันก็ช่วยปลดล็อคข้อจำกัดออกไป​ ถ้างานที่ใช้มันจำเป็นจะต้องมี Memcache เราก็ลง Memcache เองเลย ไม่ใช่ว่าต้อง workaround เช่นไปทำ filesystem cache แทน ซึ่งทั้งช้ากว่า, เสียเวลาเขียนและไม่ scale

Story

อีกอย่างหนึ่งที่ชอบในวงการ infra คือ product หลายตัวมักจะมี story เหมือนอาหารญี่ปุ่นที่ชอบมี story นั่นแหละ 555

ยกตัวอย่างเช่น Kubernetes เกิดมาจากประสบการณ์ manage container มาเป็นสิบปีของ Google เช่น design ของ Kubernetes ที่เอา pod ไว้ไหนก็ได้นั้นมาจากเคล็ดลับความสำเร็จของ Google ที่ทุกเครื่องทำหน้าที่เหมือนกัน ทดแทนกันได้หมด ทำให้สามารถ utilize เครื่องได้เต็มประสิทธิภาพมากขึ้น

หรือแม้แต่โปรแกรม ls ถ้าเราไปอ่านดูว่าทำไม GNU ถึงสร้าง ls ทำไมก็จะมี story เรื่องการต่อสู้ของ Stallman

ถ้าเทียบกับในโปรแกรมมิ่งแล้วเรามักจะสนใจมากกว่าว่าภาษานี้ ไลบรารี่นี้ทำอะไรได้ ตอนนี้ยังไม่รู้เลยว่าทำไม Guido สร้าง Python ขึ้นมา

คิดว่าเหตุผลที่มันเป็นแบบนี้เพราะว่า

  1. ของใน Infra หลายๆ ครั้งมักจะเกิดจากการ open source ของภายในองค์กรมา เช่น Hadoop, Cassandra, Redis, Memcache, Kubernetes มันเลยเกิดมาเพื่อ solve ปัญหาใหญ่ขององค์กรนั้นๆ
  2. เราจำเป็นต้องศึกษา story ของ tool นั้นๆ ด้วย เพราะ tool แต่ละตัวมันมีปัญหาที่เค้าอยากแก้จึงสร้าง tool นั้นขึ้นมา และด้วยความเป็น tool เอง use case ของมันก็มักจะจำกัดไม่นอกเหนือไปจากนั้นมาก ต่างกับ library ที่มันมักจะสามารถใช้งานได้อย่างกว้างขวาง

ถ้าดูจาก post ที่แล้วก็อาจจะสังเกตได้ว่าเราชอบประวัติศาสตร์ มันเลยยิ่งทำให้สนุกมากขึ้นไปอีก

Boredom

สุดท้ายเรารู้สึกว่าจริงๆ ธรรมชาติเราเป็น backend dev อย่างที่บอกตั้งแต่ต้นว่าที่มาสนใจ infra เพราะความจำเป็นที่จะปลดล็อคความสามารถในการเอา tool ที่มีอยู่แล้วมาใช้งาน

แต่ว่าเวลาเขียนโค้ดต่อเนื่องนานๆ ก็จะเบื่อ การที่สลับไปทำ infra บ้าง ก็แก้เบื่อได้ดีเพราะงาน infra ส่วนมากจะเป็น config ไม่ได้เขียนโค้ด หรือถ้ามีก็มีนิดหน่อยไม่ได้เป็นโปรแกรมใหญ่โตมาก