Skip to content

Platform Engineering คืออะไร? ช่วยลดงาน Developer ได้ยังไง?

Published:| Updated:

บทความนี้ถูกย้ายมาจาก blog เก่าของผมบน Medium แต่ได้ถูกปรับปรุงและเรียบเรียงเนื้อหาใหม่แล้ว

Table of Contents

บทนำ (Introduction)

ลองนึกภาพเชฟที่กำลังทำงานอยู่ในครัว แต่แทนที่เขาจะได้โฟกัสอยู่กับการทำอาหาร เขากลับวุ่นอยู่กับงานที่ไม่เกี่ยวข้องนัก เช่น การล้างผักหรือการแร่เนื้อ สิ่งเหล่านี้ทำให้เชฟทำงานได้ไม่เต็มประสิทธิภาพใช่มั้ยครับ?

เช่นเดียวกับ developer แทนที่พวกเขาจะมุ่งเน้นไปที่การพัฒนา application ซึ่งเป็นงานหลัก พวกเขากลับต้องมาเจอกับ cognitive load (ภาระทางปัญญา) หรือก็คือต้องมาเรียนรู้การจัดการ infrastructure, tools หรือ services ต่าง ๆ มากมาย

เพื่อแก้ปัญหาเหล่านี้ แนวคิดที่กำลังถูกพูดถึงอย่างมากในช่วงนี้โดยมุ่งเป้าไปที่การจัดการกับ cognitive load ของ developer และปรับปรุงกระบวนการพัฒนา software ให้คล่องตัวมากขึ้น เราเรียกมันว่า “Platform Engineering”

Platform Engineering คืออะไร?

เราอาจมองได้ว่า platform engineering เป็นเหมือนวิธีการในการเตรียมห้องครัวไฮเทค (เทียบกับ platform) ให้กับเชฟ (เทียบกับ developer) ซึ่งภายในครัวต้องมีอุปกรณ์ครบครัน, มีการเตรียมวัตถุดิบและเครื่องปรุงต่าง ๆ ไว้อย่างดี, มีหุ่นยนต์อัตโนมัติที่เชฟสามารถใช้มันทำงานบางอย่างได้ด้วยการกดปุ่มเดียว สิ่งเหล่านี้ทำให้เชฟสามารถโฟกัสกับการทำอาหารได้อย่างเต็มที่

ดังนั้น platform engineering จึงเป็นเรื่องของการสร้างและดูแล self-service platform ที่ออกแบบมาให้ developer สามารถ build, test และ deploy application ได้อย่างรวดเร็วโดยสามารถเตรียม infrastructure, tools หรือ services ต่าง ๆ ที่จำเป็นสำหรับการพัฒนา application ได้ด้วยตัวเองโดยที่ไม่ต้องรอทีม operations

Platform Engineering Architecture

Platform ถูกสร้างขึ้นจากการประกอบกันของ tools และ components ต่าง ๆ (toolchains และ workflow) เช่น Git, container orchestration, CI/CD pipeline, IaC tools, secrets manager, identity management และอื่น ๆ

Platform คือ product ของบริษัท โดยมี developer ในบริษัทเป็น user จึงเรียกว่า internal developer platform (IDP)

ปัญหาที่ Platform Engineering เข้ามาช่วย

ที่ผ่านมา developer จะต้องทำงานร่วมกับทีม operations เพื่อให้พวกเขาช่วยจัดเตรียม ecosystem สำหรับการพัฒนา application ให้ เช่น server, network, load balancer, database, secrets, encryption key หรืออื่น ๆ ไม่ต่างกับเชฟที่จะต้องรอวัตถุดิบ, รอกะทะให้ร้อน หรือรอคนมาช่วยล้างผักให้

Developer Cognitive Load

จากรูปคือ cognitive load ที่ developer ต้องเจอ สังเกตว่ามันเพิ่มขึ้นเรื่อย ๆ ตรงนี้เองที่ platform engineering จะเข้ามาช่วย

หลักการของ Platform Engineering

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

ในการสร้าง platform ให้ประสบความสำเร็จนั้นควรจะทำตามแนวคิด platform as a product นั่นคือการเก็บ user requirement, รับ feedback จาก user และต้องได้รับการ support จาก stakeholder ภายในองค์กรด้วย ทีม platform ควรจะทำความเข้าใจ pain point ของ developer โดยรวมเพื่อที่จะกำหนด feature ที่จำเป็น แล้วสร้าง platform ให้ตรงกับความต้องการเหล่านั้น

นอกจากนี้ platform ที่ดีควรจะถูกวัด performance ผ่าน KPI ต่าง ๆ เช่น productivity, lead time, deployment frequency, developer happiness, stability เพื่อให้แน่ใจว่า developer ใช้งาน platform จริง และมันช่วยให้ชีวิต developer ง่ายขึ้น รวมถึงควรจะวัด adoption rate ของ platform ด้วย เช่น มีกี่ทีมที่ใช้ platform, ช่วยประหยัดเวลาไปได้เท่าไร และความสัมพันธ์ระหว่างทีมดีขึ้นแค่ไหน

ความแตกต่างระหว่างทีม DevOps และทีม Platform

บางคนอาจมองว่า platform engineering คือขั้นกว่าของ Dev(Sec)Ops หรือมองว่า platform คือ product ที่ทีม DevOps จะต้องสร้างขึ้นมา ผมเห็นด้วยทั้งหมดเลยครับ แต่ส่วนตัวผมนั้นจะพยายามอธิบายแยกกันเพื่อให้เห็นถึงแก่นของมันก่อน เพราะแม้ว่าทั้งสอง role จะมีพื้นที่ทับซ้อนระหว่างกันอยู่มาก แต่รายละเอียดในการทำงานจริงนั้นต่างกัน

ทุกวันนี้เราก็สับสนกับความทับซ้อนของตำแหน่งอย่าง cloud engineer, DevOps engineer หรือ site reliability engineer (SRE) กันอยู่แล้ว บางที่มีตำแหน่งนั้นแต่ขาดตำแหน่งนี้ บางครั้งหน้าที่เหมือนกันแต่ดันชื่อไม่เหมือนกัน ดังนั้นการคุยกันที่แก่นของ role น่าจะดีกว่า ส่วนการ adopt ก็เป็นเรื่องของบริบทที่ต่างกันไปในแต่ละองค์กร

ถ้าใครดูฟุตบอลจะรู้ว่าตำแหน่ง LB/RB (left back/right back) กับ LWB/RWB (left wing back/right wing back) นั้นมีความคล้ายคลึงกันอย่างมากในวิธีการเล่นและมีนักเตะหลายคนที่สามารถเล่นได้ทั้งสองตำแหน่ง แต่โดยแก่นแท้ของตำแหน่งนั้นมีความต่างกันในรายละเอียดอยู่

ทีม DevOps

มุ่งเน้นที่การปรับปรุงกระบวนการพัฒนา software โดยรวม ทำหน้าที่ปิดช่องว่างหรือทำลายกำแพงระหว่างทีม development และทีม operations เพื่อให้ developer สามารถส่งมอบ software ได้เร็วและมีคุณภาพมากขึ้น

ทีม DevOps จะดูแลกระบวนการทั้งหมดตั้งแต่การ build, test, deploy, monitor ไปจนถึงการ operate โดยจะใช้ทั้ง CI/CD pipeline, automation, infrastructure as code (IaC) หรือ container orchestrator เป็นต้น

ทีม Platform

มุ่งเน้นไปที่การสร้างและดูแล platform กลาง (หรือ platform API) ที่ใช้โดย developer ภายในองค์กร หรือก็คือ internal developer platform (IDP) โดย platform นี้จะรวบรวม tools, services หรือ infrastructure เอาไว้ให้ทั้งหมดแต่จะซ่อนความซับซ้อนเอาไว้ ทำให้ developer สามารถ interact กับ infrastructure ได้ด้วยตัวเอง ช่วยลด cognitive load ลง ทำให้ทีม developer ทำงานได้เต็มประสิทธิภาพมากขึ้น

ทีม platform จะออกแบบและพัฒนา platform โดยคำนึงถึงความต้องการของ developer เป็นหลัก เป้าหมายคือการสร้าง platform ที่ใช้งานง่าย, ปลอดภัย, มีความยืดหยุ่น, รองรับการ scale และสามารถ integrate กับ tools ต่าง ๆ ได้

โดยสรุป ทีม DevOps จะโฟกัสที่การสร้าง software delivery pipeline ให้ดีที่สุด ส่วนทีม platform จะโฟกัสที่การสร้าง platform (environment) ให้ developer สามารถทำงานได้อย่างราบรื่น และทั้งสองทีมจะต้องทำงานร่วมกันเพื่อให้ผลลัพธ์นั้นสำเร็จ เพราะเป้าหมายทั้งสองทีมนั้นเหมือนกัน นั่นคือการช่วย developer ให้ทำงานง่ายขึ้น

ยกตัวอย่างหน้าที่ของแต่ละทีม

ทีม Development:

ทีม DevOps:

ทีม Platform:

บทสรุป (Conclusion)

นอกจาก DevOps แล้ว platform engineering ก็กำลังกลายเป็นแนวคิดที่สำคัญและเติบโตขึ้นเรื่อย ๆ เพราะช่วยแก้ปัญหาและอุปสรรคที่ทีม developer มักเจอ ทำให้ developer สามารถโฟกัสกับการส่งมอบ business value ได้อย่างเต็มที่

การมี platform จะเหมือนเป็น enabler ให้การทำ software delivery ในยุค cloud native เป็นไปได้อย่างราบรื่น, รวดเร็ว, และปลอดภัยมากขึ้น แม้จะมีเรื่องยุ่งยากมากมายเบื้องหลังก็ตาม แต่การนำ DevOps เข้ามาปรับใช้ก็ไม่จำเป็นต้องมีทีม platform engineering ด้วยเสมอไป องค์กรอาจทำ DevOps ได้โดยไม่ต้องมีการสร้าง self-service platform สำหรับ developer ก็ได้

และในบทความถัดไปผมจะลงรายละเอียดเกี่ยวกับ platform ซึ่งก็คือ product ที่ทีม platform engineering เป็นคนออกแบบ, สร้าง, และดูแล ซึ่งในที่นี้เราจะเรียกว่า internal developer platform (IDP)

หรือใครจะขยายความเพิ่มเติมในส่วนของ platform as a product ก็สามารถตามมาที่ link ได้เลยครับ

Does it help?

Don’t miss out on future updates - Follow or Subscribe me!

And don’t forget to share it with your friends. Your share means a lot.