it_devops

Terraform Module Architecture Design Pattern — คู่มือฉบับสมบูรณ์ 2026 | SiamCafe Blog

Terraform Module Architecture Design Pattern — คู่มือฉบับสมบูรณ์ 2026 | SiamCafe Blog

Terraform Module Architecture Design Pattern คืออะไร — ทำความเข้าใจจากรากฐาน

Terraform Module Architecture Design Pattern คือแนวทางการออกแบบและจัดโครงสร้างโมดูลในเครื่องมือ Terraform อย่างเป็นระบบ เพื่อให้การจัดการโครงสร้างพื้นฐานมีความเป็นระเบียบ ใช้ซ้ำได้ และดูแลรักษาง่ายในระยะยาว

ผม อ.บอม ทำงานด้านไอทีและเทรดฟอเร็กซ์มากว่าสิบสามปี ผ่านยุคเครื่องจริง ยุคการจำลองเครื่องแวะ ยุคคลาวด์ จนถึงยุคการจัดการคอนเทนเนอร์ขนาดใหญ่ และผมพูดได้เต็มปากว่า Terraform คือหนึ่งในเครื่องมือที่เปลี่ยนวิธีการทำงานของทีมไอทีไปอย่างสิ้นเชิง โดยเฉพาะเมื่อเราออกแบบโมดูลอย่างมีแบบแผน ในยุคแรก ๆ ที่ผมทำงาน การตั้งค่าเซิร์ฟเวอร์แต่ละเครื่องทำด้วยมือ คนละคนก็ตั้งได้คนละแบบ พอเครื่องพังก็ไม่มีใครจำได้ว่าตั้งอะไรไว้บ้าง เอกสารล้าสมัย ความรู้อยู่ในหัวคนไม่กี่คน ถ้าคนนั้นลาหรือลาออก ทั้งทีมก็ติดขัดทันที แนวคิดการเขียนโค้ดกำหนดโครงสร้างพื้นฐานแก้ปัญหาเหล่านี้ได้ตรงจุด เพราะโครงสร้างทั้งหมดถูกบันทึกเป็นข้อความที่ตรวจสอบ แก้ไข และทำซ้ำได้

หัวใจของแนวคิดนี้คือการแยกโครงสร้างพื้นฐานออกเป็นบล็อกย่อย ๆ ที่มีหน้าที่ชัดเจน เช่น โมดูลเครือข่าย โมดูลเซิร์ฟเวอร์ โมดูลฐานข้อมูล และโมดูลความปลอดภัย แต่ละโมดูลมีตัวแปรนำเข้า ค่าส่งออก และเงื่อนไขการทำงานของตัวเอง ทำให้เราเรียกใช้ซ้ำได้ในหลายโปรเจกต์โดยไม่ต้องเขียนโค้ดใหม่ คล้ายกับการประกอบเลโก้ ที่แต่ละชิ้นมีรูปทรงและหน้าที่ของตัวเอง แต่นำมาต่อกันได้หลายรูปแบบ ถ้าเทียบกับงานสร้างบ้าน โมดูลก็เหมือนหน่วยงานสำเร็จรูปที่ผลิตตามมาตรฐานเดียวกัน พอนำมาประกอบก็ได้บ้านหลายแบบโดยใช้ชิ้นส่วนชุดเดียวกัน คุณภาพของแต่ละชิ้นถูกตรวจสอบครั้งเดียวแต่ใช้ประโยชน์ได้ตลอด

ข้อดีที่ผมเห็นได้จากประสบการณ์ตรงมีสามข้อหลัก ข้อแรกคือการลดความผิดพลาด เพราะโค้ดที่ทดสอบแล้วในสภาพแวดล้อมทดลอง สามารถนำไปใช้ในระบบจริงได้อย่างมั่นใจ ข้อที่สองคือทีมสามารถทำงานแยกกันได้โดยไม่รบกวนกัน เช่น ทีมเครือข่ายดูแลโมดูลเครือข่าย ทีมฐานข้อมูลดูแลโมดูลฐานข้อมูล อีกทีมไม่ต้องเข้าไปแก้ในส่วนของกันและกัน ขอแค่ตกลงกันที่หน้าประตูว่าค่าอะไรส่งเข้า ค่าอะไรส่งออก และข้อที่สามคือการขยายระบบทำได้ง่าย เมื่อธุรกิจโตขึ้น เราเพิ่มจำนวนโมดูลหรือปรับค่าตั้งค่าได้โดยไม่ต้องเขียนใหม่ทั้งหมด

สำหรับคนที่เพิ่งเริ่มต้น ผมแนะนำให้เข้าใจสามคำสำคัญก่อน คือ โมดูลหลักที่เป็นจุดเรียกใช้ทั้งหมด โมดูลย่อยที่ถูกเรียกใช้งาน และคลังโมดูลที่เป็นที่เก็บรวมโมดูลสำหรับแชร์ระหว่างทีมหรือแชร์สาธารณะ เมื่อเข้าใจโครงสร้างพื้นฐานเหล่านี้แล้ว การอ่านโค้ดของโปรเจกต์ใหญ่ ๆ จะง่ายขึ้นมาก เพราะเรามองเห็นขอบเขตของแต่ละส่วนชัดเจน ไม่ใช่โค้ดก้อนเดียวยาวเหยียดที่แก้ตรงไหนก็กลัวพังทั้งระบบ นี่คือเหตุผลว่าทำไมบทความนี้ถึงเขียนขึ้น เพื่อเป็นคู่มือฉบับสมบูรณ์สำหรับปี 2026 ที่รวบรวมประสบการณ์จริงจากสนามรบมาให้คุณอ่าน

โครงสร้างโมดูลมาตรฐานและหลักการแบ่งชั้น

โครงสร้างโมดูลที่ดีควรมีไฟล์พื้นฐานเหมือนกันทุกโมดูล เพื่อให้สมาชิกใหม่ในทีมเปิดดูแล้วเข้าใจได้ทันทีโดยไม่ต้องถามว่าอะไรอยู่ตรงไหน

โครงสร้างที่ผมใช้และแนะนำมาตลอดสิบกว่าปีประกอบด้วยไฟล์หลักห้าไฟล์ ได้แก่ ไฟล์หลักสำหรับนิยามทรัพยากร ไฟล์ตัวแปรนำเข้า ไฟล์ค่าส่งออก ไฟล์กำหนดเวอร์ชันของเครื่องมือและผู้ให้บริการ และไฟล์เอกสารอธิบายการใช้งาน ไฟล์ทั้งหมดนี้แยกกันอย่างชัดเจน ไม่ยัดรวมในไฟล์เดียว เพราะเมื่อโปรเจกต์ใหญ่ขึ้น ไฟล์เดียวจะกลายเป็นฝันร้ายในการแก้ไข ลองนึกภาพไฟล์หนึ่งพันบรรทัดที่มีทั้งทรัพยากร ตัวแปร และค่าส่งออกปนกันมั่ว การตามหาว่าตัวแปรตัวหนึ่งถูกใช้ที่ไหน ใช้เวลาหลายเท่าของการแก้งานจริง การแยกไฟล์ยังช่วยให้การตรวจทานโค้ดก่อนรวมเข้าสาขาหลักทำได้ละเอียดขึ้น เพราะผู้ตรวจรู้ทันทีว่าควรโฟกัสไฟล์ไหน

ไฟล์เอกสารประกอบโมดูลไม่ควรมองข้าม เพราะมันคือหน้าประตูของโมดูล สมาชิกใหม่ควรอ่านเอกสารแล้วเรียกใช้โมดูลได้ทันทีโดยไม่ต้องเปิดอ่านโค้ดภายใน ผมมีกติกาในทีมว่าเอกสารต้องระบุสามอย่าง คือตัวแปรที่จำเป็นต้องระบุค่า ตัวแปรที่มีค่าเริ่มต้นพร้อมคำอธิบายผลของการเปลี่ยนค่า และค่าส่งออกทั้งหมดพร้อมตัวอย่างการเรียกใช้ ทุกครั้งที่แก้โมดูลต้องปรับเอกสารในคำขอรวมโค้ดเดียวกัน ไม่งั้นเอกสารจะตกยุคและกลายเป็นสิ่งที่ไม่มีใครเชื่อถือ

การแบ่งชั้นของโมดูลเป็นหัวใจที่สองที่ต้องเข้าใจ ผมแบ่งโครงสร้างพื้นฐานออกเป็นสามชั้นหลัก ชั้นแรกคือชั้นเครือข่ายและพื้นฐาน เช่น เครือข่ายเสมือน ซับเน็ต และกลุ่มความปลอดภัย ชั้นนี้เปลี่ยนนานมาก อาจเปลี่ยนปีละครั้ง ชั้นที่สองคือชั้นบริการหลัก เช่น เครื่องเสมือน คลัสเตอร์ และฐานข้อมูล ซึ่งเปลี่ยนเดือนละครั้งหรือสองครั้ง และชั้นที่สามคือชั้นแอปพลิเคชันที่เปลี่ยนแทบทุกวัน การแยกชั้นแบบนี้ทำให้เราอัปเดตแอปพลิเคชันได้โดยไม่กระทบโครงสร้างพื้นฐาน และลดความเสี่ยงที่การแก้ไขเล็ก ๆ จะไปทำร้ายส่วนที่ไม่เกี่ยวข้อง ผมเคยเห็นทีมหนึ่งรวมทุกอย่างไว้ในไฟล์สถานะเดียว พอมีการปรับใช้แอปเวอร์ชันเล็ก ๆ ระบบกลับวางแผนการเปลี่ยนแปลงทรัพยากรเครือข่ายขึ้นมาด้วยโดยไม่ตั้งใจ เพราะเวอร์ชันของผู้ให้บริการเปลี่ยนไป นี่คือตัวอย่างชัดเจนว่าทำไมการแยกชั้นและแยกไฟล์สถานะจึงสำคัญ

ตารางเปรียบเทียบการแบ่งชั้นที่ผมใช้จริง

ชั้นส่วนประกอบความถี่การเปลี่ยนผู้รับผิดชอบ
พื้นฐานเครือข่าย ซับเน็ต กลุ่มความปลอดภัยปีละ 1-2 ครั้งทีมโครงสร้างพื้นฐาน
บริการเครื่องเสมือน คลัสเตอร์ ฐานข้อมูลเดือนละ 1-2 ครั้งทีมพัฒนาและปรับใช้อัตโนมัติ
แอปพลิเคชันการปรับใช้แอป ตัวแปรสภาพแวดล้อมรายวันทีมพัฒนา

อีกประเด็นหนึ่งที่มักถูกถามคือควรแยกไฟล์สถานะตามสภาพแวดล้อมหรือตามชั้น คำตอบของผมคือแยกทั้งสองแบบ แยกตามสภาพแวดล้อมเพื่อกันการแตะระบบจริงโดยไม่ตั้งใจ และแยกตามชั้นเพื่อลดขนาดของไฟล์สถานะแต่ละไฟล์ ไฟล์สถานะที่ใหญ่มากจะทำให้การวางแผนช้าและเสี่ยงต่อความขัดแย้งเมื่อหลายคนทำงานพร้อมกัน จากประสบการณ์ หนึ่งไฟล์สถานะควรไม่เกินร้อยทรัพยากร ถ้าเกินก็ถึงเวลาแบ่ง

แนวทางการออกแบบโมดูลให้ใช้ซ้ำได้จริง

โมดูลที่ดีต้องออกแบบให้ใช้ซ้ำได้จริง ไม่ใช่แค่คัดลอกโค้ดมาแปะ ต้องเปิดรับค่าผ่านตัวแปรเท่านั้น และกำหนดค่าเริ่มต้นที่เหมาะสมสำหรับทุกตัวแปร

ผมเคยเห็นหลายทีมเขียนโมดูลที่ตั้งค่าตายตัวไว้ทั้งหมด พอต้องการใช้กับโปรเจกต์อื่น ก็ต้องแก้โค้ดในโมดูลโดยตรง ซึ่งขัดกับหลักการทั้งหมด เพราะแก้โค้ดโมดูลที่ระบบอื่นกำลังใช้อ้างอิงอยู่ เสี่ยงทำให้ระบบเดิมพังไปด้วย โมดูลที่ใช้ซ้ำได้จริงต้องเปิดรับค่าผ่านตัวแปรเท่านั้น และควรกำหนดค่าเริ่มต้นที่เหมาะสมสำหรับทุกตัวแปร เพื่อให้เรียกใช้แบบไม่ระบุค่าก็ยังทำงานได้ในกรณีทั่วไป เช่น โมดูลฐานข้อมูลที่ตั้งค่าเริ่มต้นเป็นขนาดกลาง เปิดการสำรองข้อมูลรายวัน และเก็บข้อมูลสำรองเจ็ดวัน ผู้เรียกใช้สามารถเรียกแบบสั้นที่สุดก็ได้ฐานข้อมูลที่พร้อมใช้ แล้วค่อยปรับค่าเฉพาะเมื่อจำเป็น

หลักการที่ผมยึดมาตลอดมีสี่ข้อ ข้อแรก ตัวแปรควรมีคำอธิบายและการตรวจสอบค่า เพื่อกันค่าที่ผิดตั้งแต่ต้นทาง เช่น ถ้าตัวแปรรับขนาดเครื่องเสมือน เราตรวจได้ว่าค่าที่ป้อนอยู่ในรายการที่ระบบรองรับจริง การตรวจสอบค่าแบบนี้ช่วยแปลงข้อผิดพลาดจากเหตุการณ์ที่พบหลังปรับใช้ยี่สิบนาที ให้กลายเป็นข้อความเตือนที่ปรากฏภายในสองวินาทีหลังรันคำสั่ง ข้อสอง โมดูลควรส่งออกเฉพาะค่าที่ผู้เรียกใช้ต้องใช้จริง ไม่ต้องเปิดทุกอย่าง เพราะยิ่งเปิดมาก ยิ่งสร้างการพึ่งพาที่แก้ยากในภายหลัง ผมเรียกว่าหนี้การพึ่งพิง เมื่อระบบหลายสิบจุดอ้างถึงค่าส่งออกที่ไม่ควรมี พอเราอยากปรับโครงสร้างภายในโมดูลก็ทำไม่ได้เพราะจะพังคนอื่นทั้งหมด ข้อสาม หลีกเลี่ยงการให้โมดูลหนึ่งไปเรียกโมดูลอื่นซ้อนกันลึกเกินหนึ่งชั้น เพราะการซ้อนลึกทำให้ตามรอยปัญหาได้ยากมาก และข้อสี่ โมดูลควรทำงานได้กับทุกสภาพแวดล้อมโดยความต่างอยู่ที่ค่าที่ป้อนเข้า ไม่ใช่เงื่อนไขที่เขียนฝังไว้ในโค้ด

ตัวอย่างโครงสร้างโมดูลที่ผมใช้จริงในงาน

modules/ ├── network/ │ ├── main.tf │ ├── variables.tf │ ├── outputs.tf │ └── versions.tf ├── compute/ │ ├── main.tf │ ├── variables.tf │ ├── outputs.tf │ └── versions.tf └── database/ ├── main.tf ├── variables.tf ├── outputs.tf └── versions.tf environments/ ├── dev/ │ └── main.tf ├── staging/ │ └── main.tf └── prod/ └── main.tf

จากโครงสร้างนี้ สภาพแวดล้อมทดลองและระบบจริงเรียกใช้โมดูลชุดเดียวกัน ต่างกันแค่ค่าขนาด จำนวนเครื่อง และการตั้งค่าความปลอดภัย ผลคือการทดสอบในระบบทดลองครอบคลุมโค้ดชุดเดียวกับที่รันในระบบจริง ลดความเสี่ยงที่ระบบจริงจะเจอสิ่งที่ไม่เคยทดสอบมาก่อน อีกเทคนิคที่ผมใช้คือการกำหนดแท็กหรือป้ายกำกับผ่านตัวแปรร่วมกันทุกโมดูล เช่น ชื่อโปรเจกต์ หน่วยงานที่รับผิดชอบ และสภาพแวดล้อม เพื่อให้การติดตามต้นทุนและการจัดการสิทธิ์ทำได้ง่าย เพราะเมื่อระบบโตขึ้น คำถามที่ผู้บริหารถามบ่อยที่สุดคือเราจ่ายค่าอะไร ใครใช้ ทำไมถึงแพงขึ้น ถ้าไม่มีป้ายกำกับที่สม่ำเสมอ คำตอบเหล่านี้หาได้ยากมาก

ในปี 2026 ที่ระบบมีความซับซ้อนมากขึ้นทุกปี แนวทางนี้ไม่ใช่ทางเลือกอีกต่อไป แต่เป็นมาตรฐานที่องค์กรที่จริงจังทุกแห่งต้องทำ เพราะจำนวนบริการบนคลาวด์เพิ่มขึ้นเรื่อย ๆ การกำกับด้วยมือเปล่าเป็นไปไม่ได้แล้ว

การจัดการไฟล์สถานะและการทำงานร่วมกันในทีม

ไฟล์สถานะคือชิ้นส่วนที่สำคัญและเปราะบางที่สุดของ Terraform หากไฟล์นี้หายหรือเสียหาย ระบบจะไม่รู้ว่าทรัพยากรใดถูกสร้างไว้แล้ว

ไฟล์สถานะเก็บบันทึกว่าโครงสร้างพื้นฐานจริงตรงกับโค้ดที่เขียนไว้อย่างไร หากไฟล์นี้หายหรือเสียหาย Terraform จะไม่รู้ว่าทรัพยากรใดถูกสร้างไว้แล้ว อาจสร้างซ้ำหรือลบทิ้งโดยไม่ตั้งใจ ดังนั้นการเก็บไฟล์สถานะจึงต้องทำอย่างระมัดระวังที่สุด กฎข้อแรกคือห้ามเก็บไฟล์สถานะไว้บนเครื่องส่วนตัวเด็ดขาด เพราะถ้าเครื่องพัง งานทั้งหมดก็ตามไปด้วย กฎข้อที่สองคือต้องเก็บในที่จัดเก็บระยะไกลที่รองรับการล็อกไฟล์ เพื่อกันสถานการณ์ที่สองคนรันการปรับใช้พร้อมกันแล้วไฟล์สถานะเขียนทับกัน ผมเคยเจอกรณีนี้ในทีมลูกค้าครั้งแรกที่เข้าไปให้คำปรึกษา สองวิศวกรรันคำสั่งเดียวกันช่วงเวลาใกล้กัน ผลคือเครื่องเสมือนชุดหนึ่งถูกล้างไปและสร้างใหม่โดยไม่มีใครรู้ตัว ตั้งแต่นั้นมาทุกโปรเจกต์ที่ผมวางระบบ การล็อกไฟล์สถานะถูกเปิดเป็นค่าบังคับตั้งแต่วันแรก

กฎข้อที่สามคือไฟล์สถานะของแต่ละสภาพแวดล้อมต้องแยกกันสมบูรณ์ ทั้งที่จัดเก็บและสิทธิ์เข้าถึง คนที่ทำงานกับระบบทดลองไม่จำเป็นต้องมีสิทธิ์แตะไฟล์สถานะของระบบจริงเลย การแยกแบบนี้ยังช่วยลดผลกระทบเมื่อเกิดข้อผิดพลาด

คำถามที่พบบ่อย

Terraform Module Architecture Design Pattern คืออะไร และช่วยแก้ปัญหาอะไรในการทำงานของทีมไอที?

Terraform Module Architecture Design Pattern คือแนวทางการออกแบบและจัดโครงสร้างโมดูลใน Terraform อย่างเป็นระบบ เพื่อให้การจัดการโครงสร้างพื้นฐานมีความเป็นระเบียบ ใช้ซ้ำได้ และดูแลรักษาง่ายในระยะยาว แนวคิดนี้ช่วยแก้ปัญหาที่พบบ่อยในอดีต เช่น การตั้งค่าเซิร์ฟเวอร์ด้วยมือที่แต่ละคนตั้งได้คนละแบบ เมื่อเครื่องพังจึงไม่มีใครจำได้ว่าตั้งอะไรไว้บ้าง เอกสารล้าสมัย และความรู้อยู่ในหัวคนไม่กี่คน ถ้าคนนั้นลาหรือลาออก ทั้งทีมก็ติดขัดทันที การเขียนโค้ดกำหนดโครงสร้างพื้นฐานทำให้โครงสร้างทั้งหมดถูกบันทึกเป็นข้อความที่ตรวจสอบ แก้ไข และทำซ้ำได้ โดยแยกระบบออกเป็นโมดูลย่อย เช่น โมดูลเครือข่าย เซิร์ฟเวอร์ ฐานข้อมูล และความปลอดภัย ซึ่งนำกลับมาใช้ซ้ำได้ในหลายโปรเจกต์เหมือนการประกอบเลโก้

โครงสร้างโมดูลมาตรฐานควรมีไฟล์อะไรบ้าง และทำไมต้องแยกไฟล์?

โครงสร้างโมดูลที่แนะนำประกอบด้วยไฟล์หลักห้าไฟล์ ได้แก่ ไฟล์หลักสำหรับนิยามทรัพยากร ไฟล์ตัวแปรนำเข้า ไฟล์ค่าส่งออก ไฟล์กำหนดเวอร์ชันของเครื่องมือและผู้ให้บริการ และไฟล์เอกสารอธิบายการใช้งาน ทั้งหมดนี้ควรแยกกันอย่างชัดเจน ไม่ยัดรวมในไฟล์เดียว เหตุผลคือเมื่อโปรเจกต์ใหญ่ขึ้น ไฟล์เดียวที่มีทั้งทรัพยากร ตัวแปร และค่าส่งออกปนกันจะกลายเป็นฝันร้ายในการแก้ไข การตามหาว่าตัวแปรหนึ่งถูกใช้ที่ไหนอาจใช้เวลาหลายเท่าของการแก้งานจริง การแยกไฟล์ยังช่วยให้การตรวจทานโค้ดก่อนรวมเข้าสาขาหลักทำได้ละเอียดขึ้น เพราะผู้ตรวจรู้ทันทีว่าควรโฟกัสไฟล์ไหน และทำให้สมาชิกใหม่ในทีมเปิดดูแล้วเข้าใจได้ทันทีโดยไม่ต้องถามว่าอะไรอยู่ตรงไหน

เอกสารประกอบโมดูลของ Terraform ควรมีเนื้อหาอะไรบ้าง?

เอกสารประกอบโมดูลไม่ควรมองข้าม เพราะเป็นหน้าประตูของโมดูล สมาชิกใหม่ควรอ่านเอกสารแล้วเรียกใช้โมดูลได้ทันทีโดยไม่ต้องเปิดอ่านโค้ดภายใน กติกาที่แนะนำคือเอกสารต้องระบุสามอย่างหลัก ได้แก่ ตัวแปรที่จำเป็นต้องระบุค่า ตัวแปรที่มีค่าเริ่มต้นพร้อมคำอธิบายผลของการเปลี่ยนค่า และค่าส่งออกทั้งหมดพร้อมตัวอย่างการเรียกใช้ นอกจากนี้ ทุกครั้งที่แก้ไขโมดูล ต้องปรับปรุงเอกสารภายในคำขอรวมโค้ดเดียวกันด้วย ไม่เช่นนั้นเอกสารจะตกยุคและกลายเป็นสิ่งที่ไม่มีใครเชื่อถืออีกต่อไป ซึ่งจะทำลายประโยชน์ของเอกสารในระยะยาว เพราะเอกสารที่ไม่ตรงกับโค้ดจริงอาจทำให้ผู้ใช้เข้าใจผิดและตั้งค่าระบบผิดพลาดได้

การแบ่งชั้นของโมดูล Terraform ควรแบ่งอย่างไร และทำไมจึงสำคัญ?

การแบ่งชั้นของโมดูลเป็นหัวใจสำคัญของสถาปัตยกรรมที่ดี แนะนำให้แบ่งโครงสร้างพื้นฐานออกเป็นสามชั้นหลัก ชั้นแรกคือชั้นเครือข่ายและพื้นฐาน เช่น เครือข่ายเสมือน ซับเน็ต

แนะนำเพิ่มเติม

🎯 เปิดบัญชี XM Forex → สมัคร

📱 แอป iCafeFX → ดาวน์โหลด

📊 สัญญาณฟรี → รับสัญญาณ

📚 คู่มือเทรด → SiamCafeBook

🤝 สมัคร Partner XM → pipaffiliates.com/c?c=72816&l=th&p=6

คู่มือ Forex ที่เกี่ยวข้อง

อ
XM Legend · เทรดเดอร์ & ผู้สอน Forex 13 ปี

ผู้ก่อตั้ง SiamCafe ตั้งแต่ปี 1997 · เทรดเดอร์สาย Forex มากกว่า 13 ปี ได้รับการยกย่องเป็น XM Legend · แบ่งปันความรู้ Forex, ไอที, AI และการเทรด จากประสบการณ์จริงในตลาดจริง

แหล่งอ้างอิง

  • SiamCafe.net - ชุมชนไอทีไทยตั้งแต่ปี 1997
  • iCafeFX.com - ศูนย์วิเคราะห์ Forex และทองคำ