golang Archive

สวัสดี Go-kit ชุดเครื่องมือสำหรับพัฒนา Microservices ด้วยภาษา Go

ในช่วงที่ผ่านมาได้มีการพูดถึง Go-kit กันพอสมควร ทั้งในเรื่องของรูปแบบการเขียนที่ดี ทั้งในเรื่องของชุดเครื่องมือสำหรับการพัฒนา Microservices บางคนก็บอกว่าเหมือน Netflix เลย บางคนก็บอกว่าเหมือน Finagle ของ Twitter เลย

Read More…

สวัสดีภาษา Golang ใน AWS Lambda

ทาง AWS Lambda ได้ประกาศสนับสนุนภาษา Go แล้ว ดังนั้นเรามาเรียนรู้กันหน่อยว่า จะเริ่มต้นอย่างไร มีอะไรให้ลองใช้งานกันบ้าง

Read More…

สรุปขั้นตอนในการพัฒนาระบบ REST API ด้วยภาษา Go ที่น่าจะดี

จากบทความเรื่อง Write a Kubernetes-ready service from zero step-by-step ทำการสรุป workflow หรือขั้นตอนของการพัฒนาระบบ REST API ด้วยภาษา Go เริ่มตั้งแต่การพัฒนา API แบบง่าย ๆ จากนั้นทำการเพิ่มความสามารถที่จำเป็นต้องมีทั้ง logging, health check และ graceful shutdown รวมไปถึงการ deploy ระบบงาน ซึ่งในตัวอย่างจะทำการสร้าง Docker Image และทำการ deploy ด้วย Kubernetes จึงทำการแปลและสรุปในแบบที่เข้าใจไว้นิดหน่อย มาเริ่มกันเลย

Read More…

สรุปเรื่องของ A theory of modern Go

จากบทความในโค้ดทัวร์ ตอน 1 ทำการอธิบาย code ที่เขียนด้วยภาษา Go มีรูปแบบหรือ pattern ที่น่าสนใจหลายตัว หนึ่งในนั้นคือ NewEntry(url string) ทำให้นึกถึงเรื่องของ A Theory of modern Go ซึ่งอธิบายถึงเกี่ยวกับ Global state/variable จึงนำมาสรุปไว้นิดหน่อย

Read More…

Golang :: มาตรวจสอบความพร้อมของระบบกันหน่อย

จากบทความเรื่อง How to ship production grade Go ? แนะนำสิ่งที่ควรต้องทำก่อนที่จะทำการ deploy code ขึ้นไปยัง production server ซึ่งมีหลายสิ่งอย่างที่ควรทำ มิเช่นนั้นอาจจะเจอปัญหาต่าง ๆ มากมาย ทั้งที่คาดหวังและไม่คาดหวังแน่นอน ดังนั้นเรามาเตรียมความพร้อมกัน จึงนำมาแปลและสรุปไว้นิดหน่อย ในบทความนี้จะยกตัวอย่างระบบที่พัฒนาด้วยภาษา Go มีเป้าหมายเพื่อส่งมอบ code ที่มีความน่าเชื่อถือ ที่สามารถระบุและบอกปัญหาได้ ซึ่งพร้อมสำหรับการ deploy

Read More…

Golang 1.10 :: รู้หรือยังว่า go test มันเปลี่ยนไป

จากเอกสารของภาษา Golang 1.10 (beta 1) นั้น ในส่วนของ go test มีการเปลี่ยนแปลงที่น่าสนใจมาก ๆ จึงนำมาสรุปและลองใช้งานกันหน่อย ประกอบไปด้วย การทำ caching ของ test result ทำการทดสอบเฉพาะส่วนที่มีการเปลี่ยนแปลงเท่านั้น ทำการ run go vet โดย default go test -coverpkg สามารถใส่ชื่อเป็น pattern ได้ go test -failfast หยุดการทดสอบทันทีถ้ามี test case ที่ไม่ผ่าน go test -json ทำการสร้าง test result ในรูปแบบ JSON เริ่มใช้งานกันนิดหน่อย

Read More…

สรุปเรื่องโครงสร้าง project ภาษา Go ที่ DigitalOcean

ทีมพัฒนาของ Digitalocean นั้นได้ออกมาเล่าถึงประสบการณ์การพัฒนาระบบงานด้วยภาษา Go ซึ่งเป็นระบบงานภายในชื่อว่า Cthulhu โดยเป็นระบบงานที่ใช้งาน version control แบบ Monorepo นั่นคือ code ทุกสิ่งอย่างอยู่ใน repository เดียวกัน แม้ว่าจะมีมากกว่า 1 project ก็รวมกันอยู่ในนี้ แน่นอนว่า ต้องเจอปัญหาต่าง ๆ มากมาย ทั้งเรื่องของโครงสร้าง ทั้งเรื่องการ scale ทั้งเรื่องของการจัดการ dependency ต่าง ๆ ทั้งเรื่องของเครื่องมือที่ใช้งาน ทั้งเครื่องของเวลาในการ build ของ CI server ทั้งเรื่อง code ownership มาดูกันว่าทางทีม Digitalocean ทำอย่างไรบ้าง ? น่าสนใจมาก ๆ

Read More…

แนะนำเทคนิคสำหรับการเขียน Test ด้วยภาษา Go

มีโอกาสไปแบ่งปันเรื่อง TDD with Golang สำหรับผู้เริ่มต้น ตั้งแต่การติดตั้ง เริ่มทำความรู้และเข้าใจเกี่ยวกับพื้นฐานของภาษา Go จากนั้นจึงเริ่มแนะนำการเขียน Test จนไปถึง Testable code ด้วยภาษา Go แต่สิ่งที่อยากสรุปไว้นิดหน่อยคือ เทคนิคสำหรับการเขียน Test ด้วยภาษา Go มาดูกันว่ามีอะไรที่น่าสนใจบ้าง

Read More…

Golang :: แก้ไขปัญหาเรื่องของ coverage report นิดหน่อย

ปัญหาที่พบเจอ เมื่อทำการทดสอบ และสร้าง coverage report ออกมาด้วยคำสั่ง จะเกิดปัญหาประมาณนี้ ทำให้ไม่สามารถสร้างรายงานของ code coverage ในรูปแบบ HTML ได้ ดังนั้นเรามาแก้ไขปัญหากันหน่อย

Read More…

[Golang] มาทำการ optimize code ด้วยการทำ benchmark และ profiling กัน

จากงาน Golang meetup ครั้งที่ 1 ของกลุ่ม Golang Thailand มีการพูดถึงเรื่องการทำ profiling ทั้ง CPU และ Memory ทำการวิเคราะห์และหา code ที่ใช้ทรัพยากรมากเกินไป เพื่อทำการปรับปรุงประสิทธิภาพการทำงานของ code ให้ดีขึ้น ดังนั้นลองมาฝึกกันหน่อยสิ

Read More…