มีโอกาสไปร่วมแบ่งปันความรู้ในการพัฒนา 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 ดังนี้ [gist id="ea47312566dc3f850ecc36afe1788538" file="mysql.txt"] จากนั้นมาในส่วนของ Apache Tomcat ซึ่งเป็น Web Server สำหรับระบบงาน โดยตกลงกันว่าจะทำการ deploy ด้วย WAR file ตามชื่อที่กำหนด จากนั้นทำการ map path จาก Host กับ Container ซะ ส่วน port ที่ต้อง publish ออกมาจาก container และใช้งานผ่าน host ด้วยคือ 80 และที่สำคัญต้อง link หรือเชื่อมโยงไปยัง container mysql ได้ด้วยนะ ดังนั้นสามารถสร้าง container ได้ดังนี้ [gist id="ea47312566dc3f850ecc36afe1788538" file="tomcat.txt"] ต่อมาก็ทำการทดสอบว่าทุกอย่างมันทำงานได้ตามที่ต้องการหรือไม่ !!!ขั้นตอนที่ 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 แบบกาก ๆ ได้ดังนี้ [gist id="ea47312566dc3f850ecc36afe1788538" file="one_machine.sh"] ตรวจสอบผลการทำงานผ่านระบบตัวอย่างดังรูปเมื่อสามารถสร้างเครื่องเดียวได้แล้ว ก็เขียน shell script เพื่อสร้าง 10 เครื่องต่อไป ...ยังไม่พอ ต้องทำการดึง source code และ WAR file มา deploy บ่อย ๆ ดังนั้นจึงทำ process สำหรับการ pull code มาในแต่ละเครื่องอีก แน่นอนว่าใช้ crontab เลยจ้า สุดท้ายก็แจก username และ password สำหรับการเข้าใช้งานผ่าน shh ต่อไป ปิดท้ายเสียค่าใช้จ่ายสำหรับการเรียนรู้ครั้งนี้ไป 5 USD ถ้วน