WEDO
Published in

WEDO

D-Class: Unboxing Site Reliability Engineer

สวัสดีครับ เมื่อไม่นานมานี้ผมได้มีโอกาสรู้จักกับตำแหน่ง Site Reliability Engineer อาชีพสุดฮอตในสายงาน IT เนื่องจากได้มีโอกาศเข้าคลาส D-Class: Unboxing Site Reliability Engineer ที่บรรยายโดย พี่วิท SRE แห่ง WEDO นั่นเอง หลายคนคงสงสัยว่า ‘SRE’ คืออะไรและมีหน้าที่สำคัญอย่างไรในองค์กร วันนี้ผมจะพาเพื่อน ๆ พี่ ๆ มาหาคำตอบให้กับทุกข้อสงสัย ถ้าพร้อมแล้วตามมาอ่านกันเลย

ก่อนอื่นเลยขออธิบายความหมายของ SRE ที่ค่อนข้างตรงตัวกันก่อนซึ่งก็คือ การสร้างความหน้าเชื่อถือให้กับระบบเพื่อให้สามารถใช้งานได้ตลอดเวลา นอกจากนั้นยังรวมไปถึงเรื่องของ Availability, Maintainability และ Safety อีกด้วย ดังนั้นหน้าที่หลักของ SRE ก็คือการอยู่ตรงกลางระหว่าง Software Engineer กับ IT Operation ให้สามารถทำงานได้ราบรื่นมากยิ่งขึ้น นอกจากนั้นแล้วเมื่อเกิด issue หรือ incident ภายในระบบ SRE จะต้องรีบเข้ามาช่วยลงมือแก้ไขอย่างรวดเร็ว เรียกได้ว่าเป็นหน้าที่ที่พร้อมจะเผชิญหน้าทุกอุปสรรคนั่นเองครับ

Cr. D-Class: Unboxing Site Reliability Engineer

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

  • Automation
  • Monitoring and Logging
  • Scalability
  • Operation
  • Environment
  • Infrastructure

ถ้าพูดในเชิงเทคนิคของ SRE อาจจะเห็นภาพได้ยาก จึงขอยกตัวอย่างในชีวิตประจำวันอย่าง ‘การขับรถ’ ซึึ่งประกอบด้วย คน รถ เส้นทาง สภาพแวดล้อม และกฏจราจร การที่จะทำให้การขับรถของเรา reliability มากที่สุด สามารถแบ่งได้ 2 ส่วน ดังนี้

  1. ส่วน operator มีการ monitoring เพื่อให้เห็นการทำงานของรถ มีการศึกษาเส้นทางไว้ล่วงหน้า
  2. ส่วนของ system มี alert เพื่อแจ้งเตือนอันตรายต่าง ๆ มีการใช้แผนที่เพื่อเพิ่ม visibility และมี automation เพื่อให้สามารถขับรถได้สะดวก

กระบวนการทั้งหมดนี้ก็เพื่อให้เราสามารถขับรถได้อย่างมีประสิทธิภาพและปลอดภัยที่สุด ซึ่งเปรียบเหมือนกับหน้าที่หลักของ SRE นั่นเอง

Cr. D-Class: Unboxing Site Reliability Engineer

ปัญหาในการพัฒนาซอฟต์แวรคงหนีไม่พ้นการทำ manual เมื่อเราเจอปัญหาทุกวัน ก็ต้องรับมือและแก้ไขปัญหานั้นอยู่ทุกวัน นอกจากนั้นยังมีโอกาสที่จะสามารถเกิดข้อผิดพลาดขึ้นได้อีก จะดีกว่าไหมถ้าเราลดเวลาที่ใช้แก้ไขปัญหาและโอกาสที่จะเกิดข้อผิดพลาดที่ต้องเจอด้วยการทำ Automation โดยใช้ SRE มาช่วยเราแก้ไขปัญหา ยกตัวอย่างเช่น การทำ Infrastructure as a code การทำ Pipeline การ Deployment การทำ CI/CD นอกจากนั้นก็ยังมี Operation as a code แล้วถ้าถามว่าทำไมเราต้องทำ Automation ด้วย คำตอบก็คือเพื่อลดปัญหาที่กล่าวมาข้างต้นนั่นเอง เพราะเมื่อเรามีการแก้ไข พัฒนา หรือ อัปเดตในแต่ละครั้ง การทำ Automation ก็สามารถช่วยให้แก้ไขได้เหมือนกันทุกครั้ง

ดูเหมือนว่า SRE จะต้องรู้รอบด้าน เยอะแยะมากมาย ซึ่งพี่วิทได้มีการสรุปทักษะที่สำคัญสำหรับ SRE ไว้ดังนี้

  1. Coding Proficiency — เพื่อทราบกระบวนการทำงานของ software และสิ่งที่ Developer กำลังลงมือทำอยู่
  2. Love of Change — เนื่องจาก software มีการพัฒนาอยู่ทุกวันดังนั้นจึงต้องมีการนำโปรแกรมต่าง ๆ เข้ามาใช้งานอยู่ตลอด
  3. Detective Skill — อันนี้ค่อนข้างสำคัญเลยสำหรับ SRE คือการเป็นนักสืบเพื่อที่จะดูว่าปัญหานั้นเกิดจากอะไร และควรแก้ตรงไหน
  4. Automation Mastery — พยายามเปลี่ยน mindset ให้เป็น Automation มากขึ้นเพื่อที่จะได้ทำงานอย่างราบรื่น
  5. Analytical Mindset — มีการรวมข้อมูลในการพัฒนา Software ทุกอย่างมา เพื่อที่จะแก้ไขปัญหาที่อาจเกิดขึ้นได้ในอนาคต
  6. Comprehensive Tech Skill — ควรมีความรู้ที่ครอบคลุมในด้าน technology เพื่อที่จะได้เข้าไปช่วยทีมต่าง ๆ ในการแก้ปัญหา

ซึ่งจริง ๆ แล้วการใช้ SRE ไม่คาดหวังว่าจะทำให้ระบบของเรามีความ Reliability ถึง 100% แต่จะจำกัดข้อผิดพลาดโดยการวางแผนว่าจะเกิดข้อผิดพลาดประมาณไหนและควรมีการแกไขอย่างไรมากกว่า

การทำงานในองค์กรเราจะสังเกต SRE เมื่อมีซอฟต์แวร์หรือโปรแกรมที่พัฒนาเกิดปัญหาขึ้น ปัญหานั้นอาจถูกส่งไม้ต่อไปเรื่อย ๆ เช่น ทีม Developer เจอปัญหา อาจส่งต่อให้ทีม Infra จากนั้นก็ส่งต่อให้ทีม Security อีกไปเรื่อย ๆ จนกระทั้ง ถึงระดับ CEO หรือลูกค้า ที่จะต้องลงมาแก้ไขปัญหานั้นเอง ซึ่งมันจะไม่ค่อยดีสักเท่าไหร่และใช้เวลานาน การเข้ามาของ SRE จึงแก้ไขในจุดนี้ และช่วยให้สามารถแก้ไขปัญหาได้อย่างรวดเร็ว

ขอยกตัวอย่างอีกซักตัวอย่างนึงการเข้ามาของ SRE นอกจากจะเข้ามาทำ automation และ investigate ปัญหาแล้ว ยังมีเรื่องของการ Optimized Cost ในส่วนของ Infrastructure ค่าใช้จ่ายที่อาจจะเกิดขึ้นในส่วนนี้ก็สามารถลดลงได้อีกด้วย

ทีม SRE จะทำหน้าที่ตั้งแต่การรวบรวม request ต่าง ๆ ในกรณีที่ต้องการพนักงานลาออกไปก็ไม่ต้องไปตามหาอะไรยุ่งยาก สามารถขอที่ทีม SRE ได้เลย นอกจากนั้นยังมีการเข้ามาช่วยสร้างมาตรฐานร่วมกับทีม Solution Architect จนกลายมาเป็น SRE Platform ที่จะสามารถช่วยทีมต่าง ๆ โดยการนำ Best-Practice ที่คิดขึ้นเข้ามาใช้ในองค์กร

Cr. D-Class: Unboxing Site Reliability Engineer

โดย WEDO มี SRE Platform ที่เป็นการทำ centralize ใน service ต่าง ๆ เพื่อให้มีการจัดการ service ได้ง่ายขี้น เช่น การขอใช้งานบริการด้านต่าง ๆ ไม่ว่าจะเป็นด้าน infrastructure ด้าน security หรือ issues ต่าง ๆ ก็สามารถขอความช่วยเหลือได้จาก SRE Platform ได้เลย ซึ่ง SRE Platform มีให้บริการ ดังนี้

  • Service Management — ดูแลในส่วนของการทำ Service Request, Change Request, Incident Request
  • Financial Management — ทำให้เห็น cost ที่ใช้ไปแล้ว และส่วนของการทำ cost optimization
  • Automation — นอกจากจะทำตั้งแต่ Cloud Infrastructure as Code ตามที่กล่าวไปข้างต้น ทาง SRE ยังทำ On-click Deploy เพื่อลดระยะเวลาในการ deploy อีกด้วย
  • Security — ทำการสแกน code และ environment และทำ Automation เพื่อช่วยเหลือทีม security
  • Governance — มีการทำ monitoring และเก็บ logging ต่าง ๆ
Cr. D-Class: Unboxing Site Reliability Engineer

สำหรับ SRE จะเข้ามามีส่วนร่วมในการพัฒนา software ตั้งแต่ขั้นตอนการ

  • Ideate — ดูปัญหาตั้งแต่เริ่มต้น
  • Plan — ช่วยวางแผนและทำ Architecture Review
  • Design — ช่วยในการ logging monitoring และช่วย scan ระบบ
  • Build — นำ DevOps เข้ามาช่วยโดยการทำ Automation Build และ Automation Deploy ผ่านการ validate code
  • Test — ช่วยให้ Dev กับ QA ทำงานร่วมกันได้ดีขึ้น
  • Release — ทำ Automated Change และ Automated Deploy ให้ reliable และ stable
  • Maintain — ทำ Automated Alert และ Service Restore

สุดท้ายนี้ สิ่งที่พี่วิท ฝากไว้เลยคือ SRE สามารถทำได้ทุกอย่างก็จริงแต่ไม่สามารถจบงานได้ด้วยตัวคนเดียว ดังนั้นสิ่งทีเราควรมีคือ Reliability Mindset ทำการออกแบบระบบให้มีความยั่งยืนตั้งแต่เริ่มต้น ให้เวลากับการวางแผนมากขึ้น แล้วจะสบายกับการทำงานในระยะยาว ทั้งนี้ก็ขึ้นอยู่กับโปรเจกต์ที่เราเจอด้วย

บทความโดย กาโต้ Solution Architect Trainee, YTP2021, WEDO

--

--

Community of T-shaped people: Business | Design | Technology

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