บันทึกการเรียนรู้หนึ่งเดือนที่ผ่านมา :)

Where the magic happens :)

Comfort zone กับการเติบโตที่เราไม่คาดไม่ถึง

หลักจากผ่านมาประมาณ 1 เดือน ก็ทำให้เราเข้าใจคำว่า Comfort Zone มากขึ้นเยอะเลย ไม่เคยคิดเหมือนกันว่าระยะเวลาแค่นี้ เราจะสามารถเรียนรู้อะไรได้เยอะแยะดีนะ เหนื่อยแต่สนุกดี ขอบันทึกเก็บไว้อ่านย้อนหลังสักหน่อย

  • มีโอกาสได้ทำ Performance tuning สำหรับKubernetes ซึ่งปัจจุบันเราออนไลน์ทั้งหมดอยู่บน Google Kubernetes Engine (GKE) ทำให้ได้รู้ว่า GCloud มันมีอะไรให้เราเล่นเยอะมาก ไม่แพ้ทางAWSเลย เมื่อก่อนแทบไม่ค่อยได้แตะเจ้าตัวk8sมาก่อนเลย แต่ถ้าใครมีพื้นฐานเกี่ยวกับcontainerมาแล้ว ก็จะเข้าใจได้ง่ายขึ้นเยอะ
    ปัญหาที่พบหลักๆ คือ ตอนเข้าไปยังระบบมีล่มอยู่เป็นบางครั้ง พยายามหาสาเหตุที่เป็นไปได้ ทุกๆครั้งที่ระบบล่ม เราจะมีการเก็บ Incident Report เพื่อทำการบันทึกสาเหตุและหาวิธีการแก้ไข ทุกๆครั้งที่ล่มเราพยายามเรียนรู้และลงมือแก้ไข
    — ทำปรับขนาดเครื่องให้เหมาะสมกับcontainer และได้เรียนรู้ว่าไม่ควรกดเปลี่ยนสเปคของเครื่อง(Node)ทีเดียวหมด เว็บไซต์ดับไป10นาที…
    — ตั้งค่าconfig ในส่วนของdeploymentให้เหมาะสมกับระบบเรามากขึ้น นั่งอ่านไล่documentเยอะมาก แต่ก็คุ้มนะ :D
G-Cloud
  • เพิ่งเคยได้ใช้งาน PostgreSQL ครั้งแรก ก็เจ๋งดีนะ รู้สึกดีได้กลับมาใช้ SQL อีกครั้ง
    — ปัญหาที่พบ คือ หลักๆน่าจะเป็นเรื่อง Connection ที่ค้างอยู่จนเต็ม ทำให้serviceไม่สามารถต่อเข้ามาเพิ่มได้ สาเหตุทำให้เว็บช้าและดับ
    — ได้ทำการแก้ไข config ให้เหมาะสมกับขนาดเครื่องมากขึ้น จำนวนConnection ควรปรับให้เหมาะสมกับสเปคของเครื่องและเวอร์ชั่นของPostgres
    — แยกเครื่องสำหรับ Write (master), Read(replica) โดยย้ายไปใช้ตัวของ Amazon Relational Database Service (RDS) (G-Cloud ยังไม่มี PostgresSQLที่สิงคโปร์) แต่ต้องมาปรับแก้ไขโค๊ดให้แยกเครื่องด้วย ถ้าLibraryไหนไม่ซัพพอร์ตก็จะเหนื่อยหน่อยนะ
  • Refactor Codeส่วนของ Legacy code ที่เขียนด้วย node.js ได้เข้าปรับปรุงโค๊ดให้เหมาะสมกับ production quality เมื่อก่อนเคยเขียนnode.jsมาบ้าง แต่ไม่เคยเอาขึ้นproductionที่มี concurrent อยู่ประมาณ 200–1,000 เลยยย สนุกดีเหมือนกัน
    — ปัญหาที่พบ คือ เราตัว knex.js ที่เราใช้ต่อpostgresมีปัญหาเรื่องconnection pool อันนี้ต้องมีการตั้งค่าใส่timeoutอะไรให้เหมาะสมกับระบบเราและปรับconnection poolให้สอดคล้องกับที่เราตั้งค่าในpostgess ไม่งั้นจะค้างอยู่ในระบบทำให้conectionเต็มได้
    จัดการเรื่องการจัดการเจ้าError handlerให้ดี ไม่งั้นrestartบ่อยเกิน พากันดับทั้งcluserได้
  • ได้ทำระบบค้นหาข้อมูลจากตัว Algolia ก็ง่ายไปอีกแบบนะ เราแค่syncข้อมูลขึ้นไปให้ แล้วเปลี่ยนFrontendให้เรียกจากที่นั้นแทนและส่วนของAlgoliaจะมีให้เราสร้างindexต่างๆ อารมณ์คล้ายกับการที่เราทำระบบค้นหาจาก Elasticsearchแต่สะดวกกว่าเยอะ
  • ได้เรียนรู้การเขียนMicroservicesที่เขียนด้วยภาษาGolangโดยติดต่อกันผ่านโพรโตคอล gRPC เจ๋งดี ปกติเขียนต่อผ่านHTTPธรรมดา ตอนนี้พยายามดึงส่วนต่างๆออกจากฝั่งNodeJSออกมาเป็นGolang
  • ได้รู้จักเจ้าตัว Luigi โดยหลักๆพวกสคริปเราจะเขียนโดยใช้ภาษาPythonเป็นหลัก โดยส่วนตัวก็รู้สึกดีนะ ยังไม่เคยใช้ภาษาไหนเขียนสคริปได้เร็วเท่าPythonโดยเราใช้Luigiเป็นตัวจัดการworker scriptทั้งหมด
Luigi is a Python package that helps you build complex pipelines of batch jobs.
  • ใช้Digital boardในการทำงานแบบจริงจังครั้งแรก ก็ไม่ได้ติดปัญหาอะไรนะ ให้ความรู้สึกดีไปอีกแบบ อยู่ที่ไหนก็ทำงานได้ work at home ได้ไม่มีปัญหา
asana.com

สุดท้ายการได้เจอผู้คนใหม่ๆคนเก่งๆ ทำให้โลกของเรากว้างขึ้นและคอนเนคชั่นที่มากขึ้นตามไปด้วย ได้เรียนรู้ข้อดี ที่จะนำมาพัฒนาตัวเราให้ดีขึ้นได้อีกในอนาคตต่อไป โลกนี้ยังมีคนที่เก่งและเขาไม่เคยที่จะหยุดพัฒนาตัวเองเลย

คิดและเขียนคือสิ่งที่ผมชอบ ได้ทดลองทำอะไรใหม่ๆ เพื่อนำมาประยุกต์และต่อยอดในเรื่องต่างๆ พร้อมถ่ายทอดเรื่องราวจากชีวิตจริง จากประสบการณ์ จากแนวคิดของผม :)

--

--