DEV Community

Weerasak Chongnguluam
Weerasak Chongnguluam

Posted on

มือใหม่ backend developer มักลืมว่าโปรแกรมอาจจะรันหลาย node

สิ่งที่คนเขียน Backend (ไม่ว่าจะ web server side ทั่วไปหรือจะทำ API) มือใหม่มักพลาดคือลืมไปว่าเวลาโค้ดเราต้องทำงานจริงๆ มันไม่ได้ถูกรันไว้แค่ 1 node มันจะถูกรันไว้หลายๆ node แล้วแบ่งภาระกันโดยมี Load Balancer ช่วยกระจาย request ให้

พอลืมนึกถึงตรงนี้ จะทำให้บางครั้งเราออกแบบพลาด เช่น อยากทำ cache บางอย่างเพื่อจะได้ทำงานได้เร็วขึ้น ก็จะไปจำไว้ใน global memory สักที่
แม้จะเขียนจัดการ lock อย่างดีไม่ให้แต่ละ thread แย่งกันใช้งาน แต่พอลืมนึงว่ามันรันหลาย node พร้อมกัน ก็จะลืมคิดว่าแล้วจะ reset cache หลายเครื่องพร้อมกันยังไงไปนั่นเอง

จริงๆแล้วก็ทำได้หลายท่าในการ clear cache หลายๆ node แต่ถ้าเรานึกเรื่องนี้ไว้แต่แรก อาจจะไปตกที่ ไม่ต้องเขียนเรื่อง cache ใน memory เองสิ ไปใช้ service อื่นเช่นเก็บลง Redis อะไรแบบนี้ที่มันเขียนจัดการ cluster หลายๆ node ของ Redis เอาไว้แล้ว เป็นต้น

Top comments (1)

Collapse
 
veer66 profile image
Vee Satayamas

ผมเคยงงว่าจะใช้ redis ทำไม โปรแกรทก็รันเครื่องเดียว ปรากฎว่าเครื่องเดียวแต่มีหลาย process 🤦‍