Use case
Use case
Scalable Architecture
ลูกค้าเคยใช้งานระบบอยู่บน Shared Hosting ซึ่งจะมีการทำงาน ส่งไฟล์ผ่าน FTP เข้าระบบตลอดเวลา อีกทั้งยังมี Trigger เข้า Web เพื่อระบุว่า File ถูก upload แล้ว เพื่อนำไป Process ต่อ
ปัญหาของลูกค้าคือ การส่งข้อมูลเข้า FTP ต่อหนึ่งผู้ใช้มีความถี่สูงมาก เมื่อมีจำนวนผู้ใช้เยอะขึ้น ระบบนั้นจึงไม่ต่างจากการทำ DDoS เข้าเซิฟเวอร์ และในที่สุดก็ทำให้ Shared Hosting ทั้งระบบล่ม กระทบต่อผู้ใช้ Shared Hosting รายอื่นๆ ลูกค้าจึงต้องการย้ายระบบไปยังที่ใหม่ ซึ่งสามารถรองรับ traffic ปริมาณมหาศาลได้
Nipa ได้รับเรื่องของลูกค้าและเสนอการย้ายระบบเข้ามายัง Nipa โดยบริการย้ายระบบให้โดยไม่มีค่าใช้จ่าย อีกทั้งมีวิศวกรระบบและทีมโปรแกรมเมอร์ช่วยดูแลปรับโครงสร้างระบบให้ เหมาะสมในช่วงการย้ายระบบ
จากการ Monitor ระบบของลูกค้า Nipa ได้ปรับปรุงระบบของลูกค้า โดยแยก service ของระบบออกเป็นแต่ละส่วน และทำ Template Image ไว้ เพื่อให้สามารถ deploy เพิ่มได้ ง่ายต่อการ scale ระบบ เมื่ออัตราการใช้งานสูงขึ้นหรือลดลง ทำให้ระบบมีความเสถียรมากกว่าการรวม service ทั้งหมดไว้บนเครื่องเดียว และยังส่งผลให้ไม่มี downtime เวลามีการปรับแก้ code มีการใช้ algorithm ของ load balance แบบต่างๆ ใน request URL ที่ต่างกัน ตามความเหมาะสมของงาน
ระบบที่ Nipa ออกแบบให้นี้ เป็นการออกแบบให้รองรับปริมาณการใช้ที่เปลี่ยนไป โดยที่โปรแกรมของลูกค้าซึ่งเป็นแบบ stateful web architecture ยังคงทำงานได้ (การส่งข้อมูลในครั้งถัดๆไป จำเป็นต้องเข้าไปยังเซิฟเวอร์เครื่องเดียวกับที่ส่งข้อมูลเข้าไปครั้งแรก) ซึ่งในระหว่างนี้ลูกค้าจะต้องพัฒนาโปรแกรมคู่ขนานกันไป ให้เปลี่ยนระบบให้เป็น stateless web architectureในที่สุด (การส่งข้อมูลในครั้งถัดๆไป เข้าไปยังเซิฟเวอร์เครื่องใดก็ได้) กล่าวคือ สิ่งที่ Nipa ให้กับลูกค้านี้ เป็นส่วนหนึ่งของการยกระดับระบบของลูกค้าเพื่อเตรียมพร้อมเข้าสู่ยุคของ Cloud & DevOps
Kubernetes Cluster On Nipa
Time to market เป็นสิ่งสำคัญในการทำธุรกิจของยุค Thailand 4.0 ดังนั้นการ Deploy Applications บน Kubernetes และควบคุม Flow ของการ Deploy ด้วย CI/CD หรือ DevOps จะช่วยให้คุณ release product ของคุณได้อย่างรวดเร็ว ทันต่อกันการแข่งขันในธุรกิจสมัยใหม่โดยสามารถเริ่มต้นด้วย Kubernetes เพียง 3 nodes เท่านั้น ด้วยการใช้ Virtual IP ในฝั่ง Public Network เพื่อรองรับการ Fail Over และสามารถขยาย Worker Nodes ได้อย่างต่อเนื่อง เพื่อรองรับการใช้งานที่มากขึ้นได้
นอกจากนี้ ยังสามารถ Deploy Infrastructure Server อื่นๆ บนคลาวด์ ในฝั่งที่เป็น Private Network ได้เพื่อเพิ่มความมั่นใจในเรื่อง Security ไม่ว่าจะเป็น Jenkins หรือ TeamCity (ระบบ CI/CD) ที่เป็นที่นิยมใช้กันมาก, ระบบ monitoring อย่าง Zabbix, กลุ่ม Database Cluster หรือ File Servers ที่ใช้เป็น Volume สำหรับ Container ใน Kubernetes Cluster ได้