Azure เป็นบริการ Cloud Computing ของ Microsoft ปัจจุบันมีการบริการที่หลากหลายมากขึ้น ไม่ว่าจะเป็นเรื่อง Big Data ผ่าน HDInsight, CDN, Scheduler, API Management, Traffic Manager เรียกได้ว่ามีบริการเพิ่มขึ้นกว่าเดิมมาก นอกจากจะมีของเล่นเพิ่มแล้ว Azure ยังสนับสนุน นักพัฒนาที่ไม่ได้ใช้เครื่องมือของ Microsoft มากขึ้นด้วย โดยเฉพาะ Azure Web Site ซึ่งในช่วงแรกบังคับให้ใช้ Visual Studio เพื่อ Deploy App ซึ่งในปัจจุบันไม่จำเป็นอีกต่อไปแล้ว เพราะคุณสามารถ Deploy App ที่พัฒนาจาก .Net, Java, PHP, Python หรือ Node.js ได้จาก Git, Github, Bitbucket หรือแม้กระทั่ง Dropbox เรียกได้ว่าเปิดกว้างกว่าเดิมมาก นอกจากนี้ Azure Website สามารถตั้งค่า Auto Scaling ได้แล้ว อยากรู้ต้องลองดู :)

มาลองสร้าง Azure Web Site กันครับ login เข้าไปที่ Azure Dashboard จากนั้นกดปุ่ม + New ข้างล่าง เลือก Web Site > Quick Create ใส่ชื่อ URL ที่เราต้องการ เลือก Region ที่ต้องการจากนั้นกด Create Web Site ได้เลย

เข้าไปดูรายละเอียด Web Site ของเราครับ

จากนั้นดูที่ Integration source control คลิกที่ Set up deployment from source control ตั้งค่า source control ที่เราต้องการ กรณีนี้ผมเลือก Local Git repository

ตัวเลือก Local Git repository นี้ Azure จะไปสร้าง Git repository ให้ใน Web Site ของเรา เวลาจะอัพโหลดไฟล์จะใช้งานผ่าน Git แบบนี้สะดวกมาก เมื่อเลือกแล้ว Azure จะสรุปข้อมูลให้เราว่าจะ commit file ขึ้นไปที่ Git repo ได้ยังไง

เราจะมาลองสร้าง Node.js App กัน เพราะ Node.js ใช้ module ตามที่นักพัฒนาต้องการ จุดเริ่ม App ไม่จำเป็นต้องเป็น server.js เราจะมาลองดูกันว่า Azure ฉลาดพอที่จะ deploy Node.js App ได้หรือไม่ เริ่มกันเลย สั่ง express generator สร้าง Express App ขึ้นมาดังนี้

express --ejs azure-node

จากนั้นสั่งติดตั้ง module ที่ต้องใช้งาน

cd azure-node && npm install

ลอง run ดู

DEBUG=azure-node ./bin/www

เราจะพบว่า webserver ทำงานที่ port 3000 เราจะไม่แก้ไขอะไรนอกจาก index.ejs เพิ่ม bootstrap เข้าไปเพื่อความสนุก จะได้มีอะไรให้ดูเป็นชิ้นเป็นอันหน่อย :)

ผลลัพท์ที่ run ได้ที่เครื่องเราก็ออกมาสวยงามแบบนี้

ทีนี้มาลอง deploy ไปที่ Azure กันครับ เริ่มจาก init repository ที่เครื่องเราก่อนดังนี้

git init

จากนั้น เพิ่ม .gitignore เข้าไปเพื่อกันไม่ให้ push node_modules เข้าไปด้วย ดังนี้

echo "node_modules/*" > .gitignore

จากนั้น add commit ใน local repo ของเราก่อน

git add .

git commit -m "init"

เพิ่ม remote repository ของ Web Site เราดังนี้

git remote add azure https://redblogwp@node11.scm.azurewebsites.net:443/node11.git

สั่ง push code เราขึ้นไปที่ remote repositoty

git push azure master

git จะทะยอย push ไฟล์ของเราขึ้นไปที่ remote repository กลับไปดูที่ Azure Web Site เราจะพบว่า Azure รับไฟล์และเริ่ม deploy Node.js App ให้เราแล้ว

หากดูขั้นตอนการ deploy Azure รู้ว่าเราต้องใช้ modules อะไรเพิ่มเติม ก็จะทะยอยดาวน์โหลด module ที่เราต้องใช้มาให้ด้วย พร้อมแก้ไข port 3000 เป็น 80 ให้เราอัตโนมัติ ลอง browse เว็บดูได้เลย

เพื่อความชัวร์และไม่ได้มั่ว เปิดดู operation log เทียบดูได้ครับ :)

ถัดมาเป็นเรื่อง Auto Scaling ซึ่งเพิ่มเข้ามาในส่วน Web Site แล้ว เรียกได้ว่าไม่ต้องกังวลหากมีคนเข้าชมเว็บไซต์เราเยอะแล้วจะ scale out ไม่ได้ สามารถตั้งค่าได้ แต่มีข้อแม้ว่า Web Hosting Plan Mode ต้องเป็นแบบ Shared ขึ้นไป ในกรณีที่เราต้องการกำหนดในรายละเอียดของการ scale เพิ่ม เช่น Schedule, Scaling Metric ต้องเลือกเป็นแบบ Standard เท่านั้น

จากภาพเลือก Standard ขนาดของ Instance แบบ Small ไม่ใช้ Schedule ในการ Scale แต่ใช้ปริมาณการใช้งาน CPU เป็นตัวกำหนด คือ Scale ได้มากที่สุด 3 Instance และถ้าใช้ CPU มากกว่า 60%-80% จะทำ Auto Scaling ให้อัตโนมัติ ถ้าอยากรู้ว่า Auto Scaling จริงหรือเปล่าก็ลองทำ load test ได้ครับ ;)

Comments are closed.