มีโอกาสไปร่วมแบ่งปันความรู้ในการพัฒนา software
ในค่าย Give&Take Agile for Software Development Workshop 3 วัน
ให้กับนักศึกษาที่มหาวิทยาลัยขอนแก่น

สิ่งที่ต้องจัดเตรียมให้คือ Server สำหรับการพัฒนาระบบจำนวน 10 กลุ่ม
จึงทำการบันทึกไว้นิดหน่อย

ปล. มีเวลาให้ทำประมาณ 30 นาทีได้มั้ง

มี software ต่าง ๆ ดังนี้

  • ระบบปฏิบัติการคือ Linux
  • ระบบพัฒนาด้วยภาษา Java 8
  • Web application server เลือกใช้ Apache Tomcat
  • ฐานข้อมูลคือ MySQL

ส่วนการพัฒนาและการ deploy ตกลงไว้ดังนี้

  • Source code ต่าง ๆ จะถูกจัดเก็บใน Github
  • ในการ deploy ระบบงานเพียงนำ WAR file ไปวางยัง directory ที่กำหนด
  • จากนั้นระบบงานจะทำการ auto deploy เอง

โดยเครื่องมือและ platform ที่เลือกใช้มีดังนี้

  • เลือกใช้งาน Cloud platform ที่ Digital Ocean
  • เลือกใช้ Docker สำหรับจัดการเรื่อง provisioning OS และ Software ต่าง ๆ

เมื่อทุกอย่างพร้อมก็ลงมือกันเลย

ขั้นตอนที่ 1 เลือก Image ที่ต้องการจาก Docker Hub

ประกอบไปด้วย

ขั้นตอนที่ 2 มาสร้าง container ต่าง ๆ จาก image

เริ่มจาก MySQL container ก่อนเลย
ต้องทำการกำหนด user และ password สำหรับการเข้าใช้งาน
ตลอดจนชื่อ database ดังนี้

จากนั้นมาในส่วนของ Apache Tomcat ซึ่งเป็น Web Server สำหรับระบบงาน
โดยตกลงกันว่าจะทำการ deploy ด้วย WAR file ตามชื่อที่กำหนด
จากนั้นทำการ map path จาก Host กับ Container ซะ
ส่วน port ที่ต้อง publish ออกมาจาก container และใช้งานผ่าน host ด้วยคือ 80
และที่สำคัญต้อง link หรือเชื่อมโยงไปยัง container mysql ได้ด้วยนะ
ดังนั้นสามารถสร้าง container ได้ดังนี้

ต่อมาก็ทำการทดสอบว่าทุกอย่างมันทำงานได้ตามที่ต้องการหรือไม่ !!!

ขั้นตอนที่ 3 source code ต่าง ๆ นั้นอยู่ใน Version Control ซึ่งเลือกใช้ Github

โดยเพื่อความง่ายก็ตกลงกับทุก ๆ กลุ่มให้สร้าง WAR file แล้วเอาขึ้น GitHub ด้วย
ฟังดูแล้วอาจจะไม่ดี แต่ผมคิดว่าน่าจะสะดวกสำหรับเวลาสั้น ๆ !!

ขั้นตอนที่ 4 เมื่อทุกอย่างพร้อมก็ลองบน Digital Ocean กันเลย

ปล. Account ที่ผมใช้งานนั้น สร้างได้แต่ 10 droplet เท่านั้น
แต่ไม่เป็นไรก็ลองใช้ดูไปก่อน

ความต้องการคือ ไม่อยากเข้าไปสร้าง Droplet เองผ่านหน้า web
ดังนั้นขั้นตอนแรกต้องไปสร้าง Token สำหรับการ access ผ่าน API ก่อนดังรูป

เมื่อได้มาแล้วก็มาเขียน script สำหรับการ provisioning ผ่าน Docker กัน
เริ่มจากเครื่องเดียวก่อน มีขั้นตอนดังนี้
1. ทำการสร้าง machine บน digital ocean ผ่าน docker-machine
2. ทำการ ssh เข้าไปยัง machine ที่สร้าง
3. จากนั้นทำการ clone source code จาก github.com
4. ทำการสร้าง container 2 ตัวคือ MySQL และ Apache Tomcat
5. ทำการเปิด firewall ให้เรียบร้อยคือต้องเปิด port 80 และ 22 ไว้

สามารถเขียนเป็น shell script แบบกาก ๆ ได้ดังนี้

ตรวจสอบผลการทำงานผ่านระบบตัวอย่างดังรูป

เมื่อสามารถสร้างเครื่องเดียวได้แล้ว
ก็เขียน shell script เพื่อสร้าง 10 เครื่องต่อไป …

ยังไม่พอ ต้องทำการดึง source code และ WAR file มา deploy บ่อย ๆ
ดังนั้นจึงทำ process สำหรับการ pull code มาในแต่ละเครื่องอีก
แน่นอนว่าใช้ crontab เลยจ้า

สุดท้ายก็แจก username และ password สำหรับการเข้าใช้งานผ่าน shh ต่อไป

ปิดท้ายเสียค่าใช้จ่ายสำหรับการเรียนรู้ครั้งนี้ไป 5 USD ถ้วน