[Tutorial] Tìm hiểu về deployment strategy: blue/green deployment, canary release và A/B Testing

— Anh Tèo này, sau khi code xong, anh deploy ứng dụng kiểu gì?

— À, anh ném cmn file PHP lên server bằng FileZilla em ạ.

— Vkl, vậy lỡ ứng dụng lỗi thì…

— Thì anh backup bản cũ rồi. Lỗi thì anh ném bản cũ lại. Hihi.

— Code như dbrr vậy. Anh nên tìm hiểu về một số chiến lược deployment đi nhé. Kinh điển chắc có ba loại: blue/ green, canary release và A/B Testing.

— Nghe thú vị đấy. Kể anh nghe đi.

Tiếp tục đọc

[Golang] Dùng context thế nào cho hợp lí?

https://go.dev/blog/context-and-structs

Contexts and Structs

  • Context giúp bạn control được code flow: truyền dữ liệu, thêm deadline, cancel từ phía caller, pass value giữa nhiều process,…
  • Bài viết này làm rõ quan điểm: Context không nên lưu vào struct mà nên pass vào hàm thành parameter.
    • Bài viết cũng nói khi nào lưu vào struct thì hợp lí.
  • Bài này chắc viết ngắn gọn thôi.
Tiếp tục đọc

[Golang] Một số improvement trên slice của Go 1.22

> https://go.dev/blog/generic-slice-functions

Robust generic functions on slices

  • slices package cũng cấp các functions để xử lý với tất cả các kiểu dữ liệu.
  • Bài này nói về cách sử dụng các functions này một cách hiệu quả, hiểu xem slice được lưu thế nào trong RAM, ảnh hưởng thế nào đến Garbage collector; team Go đã update các functions liên quan đến slice gần đây thế nào để tránh việc gây ra các lỗi “surprising”.
Tiếp tục đọc

[Golang] Package name

https://go.dev/blog/package-names

Intro

  • Go code được tổ chức theo các package. Trong cùng package, code có thể gọi tới nhau thoải mái, còn ngoài package thì những cháu nào export mới gọi được nhau.
  • Tên package luôn nằm phía trước identifier, VD: muốn gọi tới Bar trong package foo, dùng foo.Bar
  • Package name tốt thì giúp code ngon hơn.
    • Tên package thường mô tả context package dùng để làm gì, giúp client dễ sử dụng hơn.
    • Tên package cũng giúp maintainer dễ dàng xác định một identifier mới thuộc package nào (Kiểu thêm tính năng mới, tên giúp dễ định hình là thêm vào đâu hơn)
  • Effective Go cũng cung cấp cách đặt tên package cho xịn. Bài này nói về cách package name tệ, và cách để fix chúng.
Tiếp tục đọc