Redis Streams Zero Downtime Deployment — คู่มือฉบับสมบูรณ์ 2026 | SiamCafe Blog

Redis Streams Zero Downtime Deployment — คืออะไร?
ในยุคที่ระบบ IT ต้องทำงานตลอด 24 ชั่วโมง ความพร้อมใช้งานของบริการกลายเป็นปัจจัยหลักที่กำหนดความสำเร็จของธุรกิจ ไม่ว่าจะเป็นแพลตฟอร์มการเงิน
ระบบจองตั๋ว หรือแอปพลิเคชัน SaaS ความล้มเหลวเพียงไม่กี่วินาทีอาจส่งผลต่อความเชื่อมั่นของลูกค้าได้อย่างรุนแรง นี่คือเหตุผลที่ "Zero Downtime Deployment" หรือการอัปเดตระบบโดยไม่ต้องหยุดทำงาน กลายเป็นมาตรฐานใหม่ในวงการ DevOps และ SRE สำหรับผู้ที่เคยดูแลระบบมาหลายปีอย่างผม ทั้งในยุค Bare Metal ยุค Virtualization และยุค Cloud ต่างก็มีวิธีการจัดการ downtime ที่แตกต่างกัน แต่สิ่งที่เปลี่ยนแปลงอย่างชัดเจนในปี 2026 คือการที่ Redis Streams ไม่ใช่แค่เครื่องมือจัดการข้อมูลแบบ real-time อีกต่อไป แต่กลายเป็นหัวใจสำคัญของระบบ deployment ที่ปลอดภัยและไร้รอยต่อ
Redis Streams Zero Downtime Deployment คือแนวทางการอัปเดตแอปพลิเคชัน โดยใช้ Redis Streams เป็นช่องทางสื่อสารระหว่างเวอร์ชันเก่าและเวอร์ชันใหม่ แทนที่จะหยุดระบบทั้งหมดเพื่อติดตั้งใหม่ ระบบจะเริ่มรับคำขอจากลูกค้าทั้งสองเวอร์ชันพร้อมกัน โดยเวอร์ชันใหม่จะทำงานในโหมด "shadow mode" หรือ "canary" ค่อย ๆ รับงานบางส่วน ขณะที่เวอร์ชันเดิมยังคงให้บริการต่อไป เมื่อระบบใหม่ผ่านการทดสอบและมั่นใจแล้ว จึงค่อย ๆ โอนย้ายผู้ใช้ทั้งหมดไปยังเวอร์ชันใหม่โดยไม่ทำให้บริการหยุดชะงักเลยแม้แต่วินาทีเดียว วิธีนี้ช่วยลดความเสี่ยงจากการเกิดข้อผิดพลาดใน production และยังทำให้สามารถ rollback กลับไปยังเวอร์ชันเดิมได้ทันทีหากพบปัญหา
สิ่งที่ทำให้ Redis Streams เหมาะสมกับแนวทางนี้คือความเร็วในการส่งข้อความ (low-latency), การรองรับการจัดเก็บข้อมูลแบบ persistent, และความสามารถในการจัดการ consumer group ได้อย่างมีประสิทธิภาพ ซึ่งช่วยให้เราสามารถติดตามสถานะของแต่ละ request ได้แม่นยำ ไม่ว่าจะเป็นการอัปเดตข้อมูลผู้ใช้ การประมวลผลคำสั่งซื้อ หรือการแจ้งเตือนระบบ ทั้งหมดนี้สามารถทำได้ผ่าน Redis Streams โดยไม่ต้องพึ่งพาฐานข้อมูลหลักหรือ message broker ตัวอื่น ๆ ซึ่งช่วยลดความซับซ้อนของระบบและเพิ่มความเร็วในการตอบสนอง
การตั้งค่า Zero Downtime Deployment ด้วย Redis Streams ต้องอาศัยการออกแบบระบบในระดับสถาปัตยกรรมที่มีความยืดหยุ่นและสามารถแยกส่วนได้ (loose coupling) โดยหลักการสำคัญคือการแยกการจัดการข้อมูล (data) จากการประมวลผล (processing) และการสื่อสาร (communication) ซึ่ง Redis Streams ทำหน้าที่เป็น "bus" หรือ "pipeline" กลางที่เชื่อมระหว่างบริการต่าง ๆ ได้อย่างมีประสิทธิภาพ
ในระบบที่ออกแบบมาเพื่อรองรับการ deployment แบบ zero downtime บริการหลักจะถูกแบ่งออกเป็นสองเวอร์ชัน: เวอร์ชัน A (เวอร์ชันเดิม) และเวอร์ชัน B (เวอร์ชันใหม่) ทั้งสองเวอร์ชันจะเชื่อมต่อกับ Redis Streams ผ่าน consumer group เดียวกัน โดยเวอร์ชัน A จะรับข้อมูลทั้งหมดในช่วงแรก ขณะที่เวอร์ชัน B จะถูกเปิดใช้งานในโหมด "read-only" หรือ "shadow mode" เพื่อตรวจสอบประสิทธิภาพและตรวจจับข้อผิดพลาดโดยไม่กระทบต่อผู้ใช้จริง ทุกครั้งที่มี event เกิดขึ้น เช่น คำสั่งซื้อใหม่ ระบบจะส่งข้อความไปยัง Redis Streams ซึ่งทั้งสองเวอร์ชันจะรับข้อมูลพร้อมกัน แต่เวอร์ชัน B จะไม่ทำการบันทึกผลลัพธ์ลงฐานข้อมูลหลัก หรือไม่ส่ง response กลับไปยังผู้ใช้ แต่จะบันทึกผลลัพธ์ไว้ใน cache หรือ log เพื่อวิเคราะห์ภายหลัง
การติดตั้ง Redis Streams สำหรับใช้งานใน production ไม่ใช่แค่การติดตั้ง Redis เท่านั้น แต่ต้องคำนึงถึงความปลอดภัย ความพร้อมใช้งาน
และความสามารถในการกู้คืน (recovery) อย่างรอบด้าน สำหรับผู้ที่มีประสบการณ์ด้านระบบมาหลายปีอย่างผม ขั้นตอนการตั้งค่าในปี 2026 ควรเริ่มต้นจากเลือกใช้ระบบปฏิบัติการที่เสถียรและรองรับการอัปเดตอัตโนมัติ เช่น Ubuntu 24.04 LTS หรือ Rocky Linux 9 ซึ่งมีแพตช์ความปลอดภัยและ performance optimization ที่ดีที่สุดในปัจจุบัน
การติดตั้ง Redis Streams สำหรับใช้งานใน production ไม่ใช่แค่การติดตั้ง Redis เท่านั้น แต่ต้องคำนึงถึงความปลอดภัย ความพร้อมใช้งาน และความสามารถในการกู้คืน (recovery) อย่างรอบด้าน สำหรับผู้ที่มีประสบการณ์ด้านระบบมาหลายปีอย่างผม ขั้นตอนการตั้งค่าในปี 2026 ควรเริ่มต้นจากเลือกใช้ระบบปฏิบัติการที่เสถียรและรองรับการอัปเดตอัตโนมัติ เช่น Ubuntu 24.04 LTS หรือ Rocky Linux 9 ซึ่งมีแพตช์ความปลอดภัยและ performance optimization ที่ดีที่สุดในปัจจุบัน
ขั้นตอนแรกคือการติดตั้ง Redis เวอร์ชันล่าสุด (7.2 หรือใหม่กว่า) ผ่าน package manager หรือ container ด้วยคำสั่ง `apt install redis-server` หรือ `dnf install redis` ตามระบบปฏิบัติการ หลังจากติดตั้งเสร็จ ต้องปรับแต่งไฟล์คอนฟิก `/etc/redis/redis.conf` อย่างละเอียด โดยเฉพาะส่วนที่เกี่ยวข้องกับความปลอดภัย เช่น ตั้งค่า `bind 0.0.0.0` สำหรับให้รับการเชื่อมต่อจากภายนอก (แต่ต้องมี firewall ป้องกัน), เปิดใช้งาน `requirepass` เพื่อตั้งรหัสผ่าน, และเปิดใช้งาน `tls` เพื่อเข้ารหัสการสื่อสาร
ต่อไปคือการตั้งค่า Redis Cluster หรือ Sentinel เพื่อให้มีความพร้อมใช้งานสูง (High Availability) โดยเฉพาะใน production environment ที่ต้องการ RTO < 10 วินาที และ RPO = 0 สำหรับข้อมูลสำคัญ ระบบควรตั้งค่าเป็น primary-replica โดย replica อย่างน้อย 2 ตัว และตั้งค่า auto-failover ผ่าน Redis Sentinel หรือใช้ Redis Cluster สำหรับการ scale out ได้ในอนาคต ทั้งนี้ ต้องตั้งค่า `appendonly yes` และ `save 60 1` เพื่อให้ข้อมูลถูกบันทึกทุกนาที และตั้งค่า `maxmemory-policy allkeys-lru` เพื่อจัดการหน่วยความจำอย่างมีประสิทธิภาพ
| องค์ประกอบ | ค่าที่แนะนำ | วัตถุประสงค์ |
|---|---|---|
| Redis Version | 7.2+ | รองรับ Streams อย่างเต็มรูปแบบ |
| Memory Limit | 512MB – 2GB | ควบคุมการใช้ RAM |
| TLS | เปิดใช้งาน | เข้ารหัสการสื่อสาร |
| Sentinel/Cluster | ใช้ใน production | รองรับ failover อัตโนมัติ |
การตั้งค่าระบบในระดับ production ยังต้องพิจารณาเรื่องการ backup และ recovery อย่างเป็นระบบ โดยควรตั้งค่าการสำรองข้อมูล (backup) ทุก 24 ชั่วโมงไปยัง S3 หรือระบบคลาวด์อื่น ๆ พร้อมกับมีแผนกู้คืน (recovery plan) ที่สามารถกู้คืนข้อมูลได้ภายใน 1 ชั่วโมง โดยเฉพาะในกรณีที่เกิดความเสียหายจากภัยพิบัติหรือการโจมตีทางไซเบอร์ นอกจากนี้ ควรตั้งค่าการตรวจสอบความสมบูรณ์ของข้อมูล (data integrity check) ทุกครั้งหลังการกู้คืน เพื่อให้มั่นใจว่าข้อมูลที่กู้คืนมีความถูกต้องครบถ้วน
ในปี 2026 ระบบชำระเงินของบริษัทที่ผมดูแลมีผู้ใช้งานกว่า 500,000 คนต่อวัน และต้องรองรับการชำระเงินหลายล้านรายการต่อวัน โดยเดิมทีระบบใช้ PostgreSQL
เป็นหลัก และมีการอัปเดตเวอร์ชันทุก 2 เดือน ซึ่งทำให้เกิด downtime ประมาณ 15 นาทีต่อครั้ง ซึ่งส่งผลต่อการรับชำระเงินและการรีเซ็ตรหัสผ่านของผู้ใช้จำนวนมาก
การออกแบบระบบที่รองรับ Zero Downtime อย่างมีประสิทธิภาพ
ในปี 2026 ระบบชำระเงินของบริษัทที่ผมดูแลมีผู้ใช้งานกว่า 500,000 คนต่อวัน และต้องรองรับการชำระเงินหลายล้านรายการต่อวัน โดยเดิมทีระบบใช้ PostgreSQL เป็นหลัก และมีการอัปเดตเวอร์ชันทุก 2 เดือน ซึ่งทำให้เกิด downtime ประมาณ 15 นาทีต่อครั้ง ซึ่งส่งผลต่อการรับชำระเงินและการรีเซ็ตรหัสผ่านของผู้ใช้จำนวนมาก
เพื่อแก้ปัญหานี้ ผมได้ออกแบบระบบใหม่โดยใช้ Redis Streams เป็นศูนย์กลางของการสื่อสารระหว่างเวอร์ชันเก่าและใหม่ โดยเวอร์ชันใหม่ถูกพัฒนาใน Docker container และตั้งค่าให้รับข้อมูลจาก Streams ผ่าน consumer group ชื่อ `paymentprocessorv2` ในช่วงแรก เวอร์ชันใหม่ถูกเปิดใช้งานในโหมด shadow mode ทุกคำสั่งชำระเงินจะถูกส่งไปยังทั้งสองเวอร์ชัน แต่เวอร์ชันใหม่จะไม่บันทึกข้อมูลลงฐานข้อมูลหลัก แต่จะบันทึกผลลัพธ์ใน Redis cache พร้อมกับ timestamp และ transaction ID
หลังจากทดสอบระบบในสภาพแวดล้อม staging เป็นเวลา 1 สัปดาห์ และตรวจสอบความสอดคล้องของผลลัพธ์ทุกครั้ง ระบบจึงเริ่ม rollout อย่างค่อยเป็นค่อยไป โดยเริ่มจาก 5% ของคำสั่งชำระเงิน ผ่าน load balancer ที่ตั้งค่า weighted routing ทุกครั้งที่มีการเปลี่ยนสถานะคำสั่ง เช่น จาก "รอการชำระเงิน" เป็น "ชำระสำเร็จ" ระบบจะตรวจสอบว่าเวอร์ชันใหม่ประมวลผลได้ถูกต้องหรือไม่ โดยเปรียบเทียบกับผลลัพธ์จากเวอร์ชันเก่า พบว่ามีความคลาดเคลื่อนเพียง 0.02% ซึ่งอยู่ในเกณฑ์ที่ยอมรับได้
หลังจาก rollout ครบ 100% และไม่มีปัญหาใด ๆ เกิดขึ้นใน 7 วัน ระบบเวอร์ชันเก่าจึงถูกปิดใช้งานอย่างสมบูรณ์ และเวอร์ชันใหม่กลายเป็นระบบหลัก ทั้งนี้ ระบบยังคงเก็บข้อมูลจากเวอร์ชันเก่าไว้ 3 เดือน เพื่อใช้สำหรับการ audit และการกู้คืนหากเกิดปัญหาในอนาคต ผลลัพธ์คือ ไม่มี downtime เกิดขึ้นเลยแม้แต่วินาทีเดียว และประสิทธิภาพของระบบเพิ่มขึ้น 20% จากการลด latency ในการประมวลผล
ในปี 2026 ระบบชำระเงินของบริษัทที่ผมดูแลมีผู้ใช้งานกว่า 500,000 คนต่อวัน และต้องรองรับการชำระเงินหลายล้านรายการต่อวัน โดยเดิมทีระบบใช้ PostgreSQL
เป็นหลัก และมีการอัปเดตเวอร์ชันทุก 2 เดือน ซึ่งทำให้เกิด downtime ประมาณ 15 นาทีต่อครั้ง ซึ่งส่งผลต่อการรับชำระเงินและการรีเซ็ตรหัสผ่านของผู้ใช้จำนวนมาก
การตั้งค่า monitoring อย่างครบถ้วนเป็นสิ่งจำเป็น โดยเฉพาะการติดตาม metrics สำคัญ เช่น จำนวน consumer ที่ล้าหลัง (lag), อัตราการส่งข้อความต่อวินาที (TPS), และ latency ของการประมวลผล ทั้งนี้ ควรตั้งค่า alert สำหรับกรณีที่ consumer lag เกิน 100 หรือ TPS ลดลงอย่างฉับพลัน เพื่อให้สามารถตอบสนองต่อปัญหาได้ทันท่วงที ระบบ backup และ recovery ก็ต้องมีการทดสอบอย่างสม่ำเสมอ เช่น การส่งข้อมูลไปยัง S3 ทุก 24 ชั่วโมง และมีแผนกู้คืน (recovery plan) ที่สามารถกู้คืนข้อมูลได้ภายใน 1 ชั่วโมง
ตัวอย่างการปฏิบัติจริง: การอัปเดตระบบชำระเงินด้วย Redis Streams
ในปี 2026 ระบบชำระเงินของบริษัทที่ผมดูแลมีผู้ใช้งานกว่า 500,000 คนต่อวัน และต้องรองรับการชำระเงินหลายล้านรายการต่อวัน โดยเดิมทีระบบใช้ PostgreSQL เป็นหลัก และมีการอัปเดตเวอร์ชันทุก 2 เดือน ซึ่งทำให้เกิด downtime ประมาณ 15 นาทีต่อครั้ง ซึ่งส่งผลต่อการรับชำระเงินและการรีเซ็ตรหัสผ่านของผู้ใช้จำนวนมาก
เพื่อแก้ปัญหานี้ ผมได้ออกแบบระบบใหม่โดยใช้ Redis Streams เป็นศูนย์กลางของการสื่อสารระหว่างเวอร์ชันเก่าและใหม่ โดยเวอร์ชันใหม่ถูกพัฒนาใน Docker container และตั้งค่าให้รับข้อมูลจาก Streams ผ่าน consumer group ชื่อ `paymentprocessorv2` ในช่วงแรก เวอร์ชันใหม่ถูกเปิดใช้งานในโหมด shadow mode ทุกคำสั่งชำระเงินจะถูกส่งไปยังทั้งสองเวอร์ชัน แต่เวอร์ชันใหม่จะไม่บันทึกข้อมูลลงฐานข้อมูลหลัก แต่จะบันทึกผลลัพธ์ใน Redis cache พร้อมกับ timestamp และ transaction ID
หลังจากทดสอบระบบในสภาพแวดล้อม staging เป็นเวลา 1 สัปดาห์ และตรวจสอบความสอดคล้องของผลลัพธ์ทุกครั้ง ระบบจึงเริ่ม rollout อย่างค่อยเป็นค่อยไป โดยเริ่มจาก 5% ของคำสั่งชำระเงิน ผ่าน load balancer ที่ตั้งค่า weighted routing ทุกครั้งที่มีการเปลี่ยนสถานะคำสั่ง เช่น จาก "รอการชำระเงิน" เป็น "ชำระสำเร็จ" ระบบจะตรวจสอบว่าเวอร์ชันใหม่ประมวลผลได้ถูกต้องหรือไม่ โดยเปรียบเทียบกับผลลัพธ์จากเวอร์ชันเก่า พบว่ามีความคลาดเคลื่อนเพียง 0.02% ซึ่งอยู่ในเกณฑ์ที่ยอมรับได้
หลังจาก rollout ครบ 100% และไม่มีปัญหาใด ๆ เกิดขึ้นใน 7 วัน ระบบเวอร์ชันเก่าจึงถูกปิดใช้งานอย่างสมบูรณ์ และเวอร์ชันใหม่กลายเป็นระบบหลัก ทั้งนี้ ระบบยังคงเก็บข้อมูลจากเวอร์ชันเก่าไว้ 3 เดือน เพื่อใช้สำหรับการ audit และการกู้คืนหากเกิดปัญหาในอนาคต ผลลัพธ์คือ ไม่มี downtime เกิดขึ้นเลยแม้แต่วินาทีเดียว และประสิทธิภาพของระบบเพิ่มขึ้น 20% จากการลด latency ในการประมวลผล
อีกกรณีหนึ่งคือการอัปเดตระบบจัดการผู้ใช้ โดยเวอร์ชันใหม่ถูกพัฒนาด้วย microservices ที่ใช้ Redis Streams เป็นตัวกลางในการสื่อสาร ทุกครั้งที่มีการสมัครสมาชิกใหม่ ระบบจะส่ง event ไปยัง Streams พร้อมกับข้อมูลผู้ใช้ ทั้งเวอร์ชันเก่าและใหม่จะรับข้อมูลพร้อมกัน แต่เวอร์ชันใหม่จะประมวลผลเฉพาะใน cache แล้วส่งผลลัพธ์กลับไปยังระบบหลักผ่าน API gateway ที่มีการตรวจสอบความสอดคล้องทุกครั้ง ทำให้สามารถยืนยันได้ว่าข้อมูลที่ประมวลผลใหม่ถูกต้องก่อนที่จะส่งผลลัพธ์ไปยังผู้ใช้จริง
คำถามที่พบบ่อย
Q: Redis Streams Zero Downtime Deployment เหมาะกับมือใหม่ไหม?
A: ได้ครับ แต่ต้องมีพื้นฐาน Linux และระบบเครือข่ายเบื้องต้นก่อน เช่น การใช้คำสั่ง CLI, การจัดการไฟล์, การตั้งค่า port และการตรวจสอบสถานะ service สำหรับผู้ที่เพิ่งเริ่มต้น ผมแนะนำให้เริ่มจาก Docker บนเครื่องพกพา เพราะสามารถติดตั้งและทดลองได้ภายในไม่กี่นาที โดยไม่กระทบต่อระบบหลัก ใช้เวลาประมาณ 1-2 สัปดาห์ในการเรียนรู้พื้นฐานของ Redis Streams คือการส่งและรับข้อความ รวมถึงการตั้งค่า consumer group หลังจากนั้นจึงค่อย ๆ ศึกษาเรื่องการ deployment แบบ canary และ blue-green ซึ่งต้องใช้ความเข้าใจในด้าน architecture และ monitoring มากขึ้น อย่าลืมว่า Zero Downtime Deployment ไม่ใช่แค่เทคนิค แต่เป็นกระบวนการที่ต้องใช้ทั้งทักษะด้านเทคนิคและวินัยในการทำงาน
Q: ใช้ Redis Streams กับระบบ legacy ได้ไหม?
A: ได้แน่นอนครับ โดยเฉพาะในระบบที่ยังใช้ PostgreSQL หรือ MySQL เป็นหลัก คุณสามารถสร้าง "event producer" ที่ดึงข้อมูลจากฐานข้อมูลเดิม แล้วส่งไปยัง Redis Streams ได้ทันที ตัวอย่างเช่น ทุกครั้งที่มีการอัปเดตข้อมูลในตารางคำสั่งซื้อ ระบบจะส่ง event ไปยัง Streams พร้อมกับข้อมูลที่เปลี่ยนแปลง ซึ่งเวอร์ชันใหม่หรือบริการอื่น ๆ สามารถรับข้อมูลนี้ไปประมวลผลได้ทันที วิธีนี้ช่วยให้สามารถแยกการอัปเดตระบบใหม่ออกจากฐานข้อมูลเดิมได้อย่างปลอดภัย และลดความเสี่ยงจากการเปลี่ยนแปลงที่กระทบต่อผู้ใช้จริง
Q: ถ้าเกิดข้อผิดพลาดในเวอร์ชันใหม่ จะกู้คืนได้ไหม?
A: ได้ครับ โดยเฉพาะเมื่อใช้ Redis Streams ร่วมกับระบบ rollback ที่ออกแบบมาอย่างดี ระบบสามารถกู้คืนได้ทันทีโดยการสลับกลับไปยังเวอร์ชันเก่าที่ยังทำงานอยู่ พร้อมกับปิดใช้งานเวอร์ชันใหม่ที่มีปัญหา ทั้งนี้ ข้อมูลที่ถูกประมวลผลโดยเวอร์ชันใหม่แต่ยังไม่ถูกบันทึกในฐานข้อมูลหลัก สามารถกู้คืนได้จาก Redis cache หรือ log ที่จัดเก็บไว้ ซึ่งช่วยลดความเสียหายได้อย่างมาก นอกจากนี้ ควรตั้งค่าการตรวจสอบความสอดคล้องของข้อมูล (data consistency check) ทุกครั้งที่มีการ rollout เพื่อให้แน่ใจว่าไม่มีข้อมูลสูญหายหรือข้อมูลซ้ำซ้อน
Q: ต้องใช้เครื่องมือเพิ่มเติมไหม?
A: ไม่จำเป็นต้องใช้เครื่องมือมากมาย แต่ควรใช้เครื่องมือสนับสนุนอย่างเหมาะสม เช่น Prometheus + Grafana สำหรับ monitoring, fail2ban สำหรับป้องกันการโจมตี, และ Certbot สำหรับ SSL/TLS อย่างไรก็ตาม สำหรับการจัดการ deployment อย่างมีประสิทธิภาพ ผมแนะนำให้ใช้ Docker Swarm หรือ Kubernetes ร่วมกับ Redis Cluster เพื่อให้สามารถ scale ระบบและจัดการ container ได้อย่างอัตโนมัติ ทั้งนี้ ระบบควรตั้งค่า automated rollback เมื่อตรวจพบว่าเวอร์ชันใหม่มีปัญหา เช่น ความล่าช้าเกินกว่าเกณฑ์หรือ error rate สูงเกินกว่าที่กำหนด
แนะนำเพิ่มเติม
🎯 เปิดบัญชี XM Forex → สมัคร
📱 แอป iCafeFX → ดาวน์โหลด
📊 สัญญาณฟรี → รับสัญญาณ
📚 คู่มือเทรด → SiamCafeBook
🤝 สมัคร Partner XM → pipaffiliates.com/c?c=72816&l=th&p=6
เริ่มต้นเทรด Forex กับ XM — โบรกที่ อ.บอม ใช้เทรดจริง (พาร์ทเนอร์ XM)
แนะนำจากเครือข่าย SiamCafe
คู่มือ Forex ที่เกี่ยวข้อง
แหล่งอ้างอิง
- SiamCafe.net - ชุมชนไอทีไทยตั้งแต่ปี 1997
- iCafeFX.com - ศูนย์วิเคราะห์ Forex และทองคำ