เขียนเรื่อง Docker คร่าวๆ ไว้เมื่อเดือนกรกฎาคมที่ผ่านมา ไม่ได้แนะนำการใช้งาน ครั้งนี้มาลงในรายละเอียดกันว่าจะเล่นอะไรได้บ้าง เนื้อหาของจะครอบคลุมดังนี้

  • ติดตั้ง Docker
  • ใช้งาน Docker เบื้องต้น
  • สร้าง Image จาก Dockerfile
  • ใช้ Hipache ทำ redirect + loadbalance ไปยัง Docker container

มาเริ่มจากการติดตั้งกันก่อน ใช้ Ubuntu 12.04 LTS เหมือนเดิม อัพเกรดให้เรียบร้อย จากนั้นมาติดตั้ง Docker กัน Docker ต้องใช้ kernel ที่มี cgroup ซึ่งใน Ubuntu 12.04 ในส่วนของ kernel ยังไม่มี cgroup เพราะฉะนั้นต้องอัพเกรด kernel และ reboot เครื่อง :)

apt-get update

apt-get upgrade

sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring

sudo reboot

หลังจาก reboot เครื่องเราก็จะได้ kernel ใหม่กันแล้ว มาเริ่มติดตั้ง Docker กันต่อได้

sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"

sudo sh -c "echo deb http://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list"

sudo apt-get update

sudo apt-get install lxc-docker

จากนั้น กำหนดให้ผู้ใช้อยู่ในกลุ่ม docker ดังนี้

sudo gpasswd -a <username> docker

sudo service docker restart

มาทดลองกัน โดยใช้คำสั่ง

docker run -i -t ubuntu /bin/bash

คุณจะพบว่า Docker จะทยอยดาวน์โหลด image และสั่ง run bash เป็น process หนึ่ง แล้ว Docker ก็จะพาคุณเข้าไปยัง container จะได้ shell prompt ดังนี้

คุณสามารถใช้คำสั่ง Linux ปกติได้ใน container โดยไม่มีผลกระทบใดๆ กับเครื่อง host ที่เราทำงานอยู่ มาลองคำสั่งที่ต้องใช้งานกันประจำกันก่อนดีกว่า ตอนนี้ docker run container จาก base image ที่ชื่อ ubuntu ให้คุณเปิด terminal ขึ้นมาอีก 1 หน้าต่างแล้วใช้คำสั่ง

docker ps

จะได้ผลลัพท์ออกมาแบบนี้

docker ps เป็นคำสั่งที่เอาไว้แสดงรายการ container ที่ทำงานอยู่ ในกรณีนี้เรามี container 1 ตัวที่กำลังทำงาน โดยกำลังทำงานโดยคำสั่ง /bin/bash นั่นเอง การจัดการกับ container ก็จะเหมือนกับการจัดการกับ virtual machine คุณสามารถสั่ง start, stop, run, kill ได้ด้วย

การใช้งาน Docker เราจะต้องมี Docker image ซึ่งการที่จะได้ image มานั้นมี 3 ช่องทางคือ

  1. สร้าง image จาก Dockerfile
  2. สั่ง pull, run เพื่อดาวน์โหลด image จาก Docker index
  3. สร้างจาก image ที่มีอยู่เดิม

เราจะเล่นวิธีง่ายๆ กันก่อน ลองใช้คำสั่ง docker search เพื่อค้นหา image ที่ต้องการ

docker search

ผลลัพท์ที่ได้ออกมาแบบนี้

เราจะพบว่ามี image ที่เกี่ยวข้องกับ wordpress เยอะมาก แลัวจะเลือกตัวไหนดี ? คำตอบง่ายๆ ก็คือเลือกตัวที่มี ดาวเยอะๆ และ TRUSTED ครับ ถ้าอยากดูรายละเอียดก็สามารถดูจากหน้าเว็บได้ที่ http://index.docker.io ครับ

ก็ลองค้นหา image กันได้ เมื่อได้ image แล้ว สั่งให้ ​download image wordpress มาไว้ที่เครื่องเราดังนี้

docker pull jbfink/wordpress

ลองสั่ง docker images เพื่อดูว่าเรามี image อะไรบ้าง

docker images

จะพบว่าเรามี image wordpress มาแล้ว ให้ลองสั่ง run พร้อมระบุเลข port ที่ต้องการ map เข้าไปใน container

docker run -d -p 80 -p 22 jbfink/wordpress

Docker จะคืน shell prompt มาให้เราพร้อม ID ของ container ลองใช้คำสั่ง logs เพื่อดูว่า container ทำงานอะไรไปแล้วบ้าง

docker logs 4216aa1cba8c

ในส่วน ID นี้สามารถระบุแบบเต็มหรือแบบย่อโดยพิมพ์ 3-4 ตัวอักษรแรกก็ได้ image นี้จะ random password ของ user, mysql root ฯลฯ มาให้ให้ลองดูจาก log เมื่อ container run เสร็จแล้วเราจะได้ port เลขยาวๆ map ไปยัง port ต่างๆ ของ container ให้ลองใช้คำสั่ง docker ps ดู

ตามรายละเอียด คุณสามารถใช้คำสั่ง ssh เข้าไปใน container ได้โดยใช้ port 49153, Web Server ทำงานบน port 49154 ให้ลองเข้าเว็บตาม port ที่ Docker ระบุมาให้ ก็จะเข้าสู่หน้าติดตั้ง WordPress ดังนี้ ตั้งค่านิดหน่อยคุณก็จะได้ WordPress ใช้งานแล้ว :)

เอาพอสนุกสนาน ทีนี้มาลองสร้าง image กันบ้าง อย่างที่บอกข้างต้น เรามีวิธีการสร้าง image อยู่หลายวิธี แต่เบื้องหลังของการทำ image จะเป็นการสร้าง file system ซ้อนกันเป็น layer ดังนั้นเพื่อความสะดวก ตรวจสอบได้ง่าย ผมแนะนำให้สร้างจาก Dockerfile ครับ Dockerfile เป็น config เบื้องต้นสำหรับ image ที่เราต้องการสร้าง ซึ่งเราไม่จำเป็นต้องสร้างจาก base image ที่มีทั้ง service และ application เราจะใช้หลักการของ Docker ในเรื่อง filesystem layer เป็นตัวช่วย โดยดึง base image ที่เป็นระบบปฏิบัติการต่างๆ เอามาต่อยอดโดยการติดตั้ง service ที่เราต้องการลงไป ตั้งค่า config ต่างๆ และ expose port สำหรับเปิดให้ใช้งาน โครงสร้าง Dockerfile แบบง่ายๆ มีดังนี้

  • FROM ระบุว่า image จาก base image ใด
  • MAINTAINER ระบุชื่อของผู้ดูแล image นี้
  • RUN สั่งให้ run คำสั่งที่ต้องการ เช่น apt-get install xxx และ commit image ทุกๆ ครั้งที่ใช้คำสั่งนี้
  • EXPOSE เปิด port ที่ต้องการใช้งาน
  • CMD ใช้คำสั่งบน command line

เพื่อความเข้าใจ มาลงมือสร้าง image กันดีกว่า ให้ clone project จาก github.com/anoochit/docker-apache2 ดังนี้

git clone git@github.com:anoochit/docker-apache2.git

จากนั้นสั่ง build image ดังนี้

cd docker-apache2

docker build -t apache2 .

รอไปเรื่อยๆ จน build เสร็จ คุณจะได้ image ID ยาวๆ มา 1 ตัว

ลองใช้คำสั่ง docker images ดูก็จะพบว่าคุณมี image apache2 เพิ่มขึ้นมาแล้ว

ลองสั่ง run ดูครับ

docker run -d -p 80 apache2

ทีนี้ลองเปิด browser ดูครับว่า apache ทำงานมั๊ย อย่าลืมระบุ port นะครับ เราก็จะได้หน้าเว็บเปล่าๆ มาดังนี้

มาลองเล่นอะไรสนุกๆ กันอีกนิดหน่อย เราสามารถระบุ part ของเครื่อง host เพื่อ map ไปยัง directory ภายใน container ได้ ใน project ที่ clone มาจะมีไดเรคทอรี www อยู่ เอามาเล่นได้เลยครับ

WWW_DIR=`pwd`www

docker run -d -p 80 -v $WWW_DIR:/var/www apache2

ทีนี้ลองเปิด browser ใหม่ เราจะได้หน้าเว็บอย่างนี้

มาลองเล่นอีกอย่างหนึ่ง กรณีที่คุณสร้าง image แล้วต้องการนำไปเผยแพร่บน Docker Index สามารถทำได้ 2 วิธีคือ

  • สั่ง push image
  • สั่งสร้างจาก github

ซึ่งทั้ง 2 กรณีนี้จะต้องเป็นสมาชิกของ Docker Index ก่อน ส่วนสร้าง image จาก GitHub สามารถเพิ่ม project ของคุณผ่านหน้าเว็บ Docker Index ได้เลย ซึ่งง่ายมาก แต่ในกรณีที่เราต้องการใช้งาน Docker Registry ของตัวเอง วิธีการง่ายๆ ดังนี้

วิธีการง่ายๆ มีแค่นี้ ผมได้ตั้ง Docker Registry ของผมเองชื่อ registry.redex.net ทำงานบน port 5000 (default) สามารถสั่ง push และ pull image ได้ง่ายๆ ดังนี้ การ push image ไปยัง registry ให้ tag image id ที่คุณต้องการก่อน จากนั้นค่อยสั่ง push

docker tag 850607808486 registry.redex.net:5000/myweb

docker push registry.redex.net:5000/myweb

กรณีที่คุณอยู่ Host อื่นที่มี Docker ติดตั้งอยู่ คุณก็สามารถ pull image จาก Docker Registry มาใช้งานได้ ดังนี้

docker pull registry.redex.net:5000/myweb

ถ้าชื่อ image มันยาวไปก็สั่ง tag จาก image ID ได้ จากนั้นก็สั่ง run ได้ตามปกติ :)

docker tag a6f2023aa5f9 myweb

docker run -d -p 80 -p 22 myweb

มาลองทำ Load Balance กับ container แบบง่ายๆ กันดูบ้าง ที่เครื่อง host ติดตั้ง hipache และ redis server ให้เรียบร้อย หรือจะใช้ docker ก็ได้ครับ

docker run -d -p 6379:6379 -p 80:80 samalba:hipache supervisord -n

จากนั้นตั้งค่า Hipache ผ่าน Redis

redis-cli -h 172.17.42.1 -p 6379 rpush frontend:www.redex.net myweb

สั่ง run container เพิ่มสัก 2-3 ตัว ด้วยคำสั่ง

ID=$(docker run -d -p 80 -p 22 myweb)

PORT=$(sudo docker port $ID 80)

redis-cli -h 172.17.42.1 -p 6379 rpush frontend:www.redex.net http://172.17.42.1:$PORT

คำสั่งข้างต้น run container หา port ที่ผูกกับ port 80 แล้วลงทะเบียนใน redis จากนั้นใช้คำสั่ง

redis-cli -h 172.17.42.1 -p 6379 lrange frontend:www.redex.net 0 -1

ทีนี้มาลองทดสอบ Hipapche กัน อย่าลืมกำหนด DNS Record ให้เป็นแบบ Wildcard เพื่อให้ Hipache ทำ redirect ไปยังเว็บที่ถูกต้องให้ ให้ทดลองเปิด browser ดูแล้วลอง refresh หลายๆ รอบ จะได้ผลลัพท์ดังนี้

จะเห็นว่า Hipache พยายามทำ Load Balance ให้ด้วย สำหรับท่านที่สนใจ Hipache ก็หาข้อมูลเพิ่มเติมได้ที่ dotCloud

Joomla!Day™ Bangkok 2013 งานสัมมนาที่ท่านจะได้พบกับนักพัฒนา Joomla! ตัวจริงจากต่างประเทศและในประเทศ ที่จะมาแนะนำ Joomla! เวอร์ชันล่าสุด, ระบบเสริมต่างๆ และ Showcase การใช้งาน Joomla! หลากหลายรูปแบบ นอกจากนี้ผู้จัดงานยังได้จัดหาวิทยากร ที่มีความเชี่ยวชาญมากมาย อาทิ การบริหารจัดการ Social Network โดยคุณอภิศิลป์ จาก Pantip.com, คุณณัฐกร ผู้เชี่ยวชาญ SEO/SEM , คุณศิระ (ฮันท์) นักพัฒนาระดับแถวหน้าของวงการ ที่จะมาพูดถึงการพัฒนาด้วย Node.js , Mr.Sam Moffatt ที่มาเป็น Speaker กับเราทุกครั้ง ปีนี้เขาจะมาเล่าให้ฟังว่าการสร้าง Infrastructure เพื่อรอง Mobile Application ขนาดใหญ่ ด้วย Open Source นั้นเขาใช้อะไรบ้าง , มาตรฐาน WCAG 2.0 ที่เว็บภาครัฐจะต้องทำให้รองรับ รวมถึง Web Security และเทคโนโลยีใหม่ๆ ในอนาคตอีกมากมาย

วิทยากรมีใครบ้าง

  • Mr.Sam Moffatt Joomla! Production Leadership Team and Development Coordinator – Joomla.org (วิทยากรจากประเทศ สหรัฐอเมริกา)
  • Mr. Emmanuel Danan FLEXIcontent Free CCK for Joomla lead developer (วิทยากรจากประเทศ ฝรั่งเศส)
  • Mr. Mark Lee StackIdea.com (วิทยากรจากประเทศ มาเลเซีย)
  • คุณอัครวุฒิ ตำราเรียง นายกสมาคมศึกษาและพัฒนาโอเพ่นซอร์ส (OSEDA) / Joomla Bug Squad – Joomla.org
  • คุณศิวัฒน์ เชาวรียวงษ์ นายกสมาคมโฆษณาดิจิตอลไทย (DAAT)
  • คุณอภิศิลป์ ตรุงกานนท์ นายกสมาคมผู้ดูแลเว็บไทย (TWA)
  • คุณศิระ สัจจินานนท์ CTO & Co-fouder Jitta.com and Managing Director Webiz!
  • คุณณัฐกร รัตนชัยสิทธิ์ Managing Director Predictive Co.,Ltd.
  • คุณกิติศักดิ์ จิรวรรณกูล Information Security Specialist สำนักงานรัฐบาลอิเล็กทรอนิกส์ (องค์การมหาชน) (สรอ)
  • คุณชัยวุฒิ พรหมบุตร (มาสเตอร์อึ่ง) ผู้จัดการฝ่ายออกแบบและพัฒนา สถาบัน EWTC
  • คุณศุภชัย แต่สกุล ผู้จัดการโครงการอาวุโส บ.มาร์เวลิค เอ็นจิ้น จก./ Joomla Translation Team – Joomla.org
  • คุณสณาวิน ติณสุวรรณ์ Product Manager บ.มาร์เวลิค เอ็นจิ้น จก. / Joomla Bug Squad – Joomla.org
  • และวิทยารับเชิญอีกมากมาย

ค่าใช้จ่ายเท่าไรและจะได้รับอะไรบ้าง

ค่าใช้จ่ายสำหรับการเข้าร่วมงาน

  • สำหรับผู้ชำระเงินภายในวันที่ 10 ตุลาคม – 31 ตุลาคม 2556 ราคาพิเศษ 790 บาท
  • สำหรับผู้ชำระเงินภายในวันที่ 1 พฤศจิกายน – 17 พฤศจิกายน 2556 ราคา 890 บาท
  • สำหรับผู้ชำระเงินภายในวันที่ 18 พฤศจิกายน 2556 เป็นต้นไป ราคา 990 บาท

โดยจะได้รับ

  • สิทธิ์ในการรับฟังสัมมนาจากวิทยากรผู้ทรงคุณวุฒิ ทั้ง 2 วัน
  • เสื้อยืดสุดเท่ สกรีนโลโก้จูมล่า (ลายลิขสิทธิ์ของแท้) ฟรี 1 ตัว (สำหรับผู้ชำระเงินภายในวันที่ 12 พฤศจิกายน 2556 รับสิทธิ์สามารถเลือกไซส์เสื้อได้)
  • อาหารกลางวัน 2 มื้อ , 4 Coffee Break
  • สิทธิ์ในการร่วมชิงรางวัลในงาน

ลงทะเบียนอย่างไร

  • ลงทะเบียนออนไลน์ที่ http://www.joomladay.in.th/th/registration
  • ลงทะเบียนทางโทรศัพท์ ที่หมายเลข 02 7171120-1
  • ลงทะเบียนทางอีเมล์ โดยแจ้ง ชื่อ ที่อยู่ และเบอร์ติดต่อกลับ ส่งมาที่ info [at] Joomladay.in.th

ที่มา – Joomla Corner

OpenShift เป็น Platform as a Service พัฒนาโดย RedHat ซึ่งนำแนวคิดการพัฒนา PaaS โดยไม่พึ่งพาการทำ Multi Tenant โดยใช้ VM แต่ใช้ Kernel Control Group, Namespace และ SELinux เป็นตัวแบ่ง Tenant ให้แต่ละ Application ทำงานแทนการใช้ VM ทำให้โครงสร้างของ OpenShift แตกต่างจาก PaaS ตัวอื่นๆ อย่างชัดเจน OpenShift ใช้ Gear แทน Application ของผู้ใช้ ซึ่งใน 1 Gear จะมีส่วนประกอบไปด้วย Code ของ Application, Git Repository, Application Environment และ Cargtride ที่เป็น Application Runtime, ฐานข้อมูล, Jenkins Server สำหรับทำ CI และ HA Proxy สำหรับทำ Load balance ระหว่าง Gear และรองรับการทำ Elastic Scale ผ่าน HA Proxy นอกจากนี้ยังสร้าง domain name จาก namespace ที่กำหนดให้โดยผู้ใช้ให้อีกด้วย ใครสนใจเรื่อง Architecture เข้าไปอ่านในเว็บ OpenShift กันได้

OpenShift แบ่งรุ่นบริการออกเป็น 3 รุ่น คือ

  • OpenShift Origin เป็นโอเพนซอร์สสามารถเข้าร่วมพัฒนาได้
  • OpenShift Enterprise เป็นรุ่น Enterprise ติดตั้งผ่าน RHEL Repository
  • OpenShift Online เป็นบริการออนไลน์บน openshift.com

OpenShift สามารถติดตั้งได้บน RedHat Enterprise Linux และ Fedora สำหรับ Linux Distribution อื่น เอา ไฟล์ spec+source ไป build package เอาเอง T_T

วิธีการติดตั้ง OpenShift ทำได้ 2 วิธี

ถ้าอยากลองเล่น OpenShift ก็สามารถลงทะเบียนเข้าใช้งานที่ OpenShift Online ได้ฟรี สำหรับการติดตั้งแบบง่ายๆ ก็คงหนีไม่พ้น Puppet ครั้งนี้ใช้ Fodora 19 ติดตั้งแบบ Command Line และ Developer Tools อ้อ ลืมบอกไปว่าเราจะติดตั้งแบบง่ายที่สุดคือมี broker+node+console ในเครื่องเดียวกัน ใครสนใจติดตั้งแบบอื่น ตามลิงค์ได้ที่ท้ายบทความ หลังจากติดตั้ง Fedora 19 แล้วก็ติดตั้ง Puppet ดังนี้

yum install -y --nogpgcheck http://yum.puppetlabs.com/puppetlabs-release-fedora-19.noarch.rpm

เนื่องจากเราจะใช้ mcollective และ activemq ของ OpenShift Origin ดังนั้นต้องไปตั้งค่า exclude ไว้ใน repo ของ puppet โดยแก้ไขไฟล์ /etc/yum.repo.d/puppetlabs.repo ใส่ค่า exclude=*mcollective* activemq ต่อท้ายทุกๆ repo ในไฟล์ puppetlabs.repo จากนั้นตั้งติดตั้ง puppet และเครื่องมือที่ต้องใช้

yum install -y puppet facter tar httpd-tools

จากนั้นติดตั้ง puppet module ดังนี้

puppet module install puppetlabs/ntp

puppet module install puppetlabs/stdlib

puppet module install openshift/openshift_origin

ติดตั้ง Bind และสร้าง TSIG Key

yum install -y bind

สร้าง TSIG Key ให้ domain ของคุณ ในกรณีนี้ใช้เป็น example.com ถ้าไม่ชอบก็สามารถเปลี่ยนเป็น domain ที่คุณต้องการได้

/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom -K /var/named example.com

cat /var/named/Kexample.com.*.key | awk '{print $8}'

คุณจะได้ค่า Key หน้าตาแปลกๆ แบบนี้ Mczfz277B5ykcPB4mAurZtZMhmXV6g== ให้จดเอาไว้ แล้วสร้าง config ชื่อ openshift_origin.pp ดาวน์โหลดจาก link ได้ครับ แก้ไข config ตามที่คุณต้องการ เช่น domain, bind key เป็นต้น ใน config ผมกำหนดให้ puppet ติดตั้ง Cartridge แค่ PHP, PHPMyAdmin, MariaDB และ HAProxy เพื่อความรวดเร็ว เมื่อได้ไฟล์ config กันแล้ว ก็สั่งให้ puppet ทำงานดังนี้

puppet apply --verbose openshift_origin.pp

ระหว่างนี้ก็นั่งรอครับ ประมาณครึ่งชั่วโมง T_T ถ้าไม่มี Error ตัวแดงๆ ก็เป็นอันใช้ได้ เมื่อติดตั้งเสร็จให้ reboot เครื่องแล้ว เปิด browser ไปที่ http://broker.example.com/console

OpenShift จะถาม username และ password ใส่ openshift, password จากนั้นก็ใช้งานตามปกติ

ลิงค์ที่น่าสนใจ

กูเกิลเผยสถิติเวอร์ชันแอนดรอยด์รอบใหม่ (นับถึง 1 พฤศจิกายน) ล่าสุด Jelly Bean ทุกเวอร์ชันรวมกันมีส่วนแบ่งตลาดเกินครึ่งของแอนดรอยด์ทั้งหมดแล้ว

  • Jelly Bean 52.1%
  • Ice Cream Sandwich 19.8%
  • Honeycomb 0.1%
  • Gingerbread 26.3%
  • Froyo 1.7%

แต่ถ้าแตกเวอร์ชันย่อยของ Jelly Bean จะแบ่งได้เป็น 4.1 37.3%, 4.2 12.5%, 4.3 2.3%

ที่มา – Blognone

วันนี้ลางานไปงานสัมนา AWS Cloud Kata for Start-ups and Developer งานนี้จัดขึ้นที่โรงแรม Centerpoint Hotel & Resident ติดกับ Terminal 21 สิ่งที่ผมสนใจในงานนี้มี 2 อย่าง อันแรกคือระบบลงทะเบียนผ่าน PeaTix ผมชอบมากๆ สะดวกและรวดเร็ว แค่ลงทะเบียนผ่านหน้าเว็บหรือผ่าน Mobile App คุณก็จะได้ QR Code มา 1 อันพร้อมหมายเลขที่นั่ง ทำให้ผมสงสัยว่าตอนเข้างานสัมนาเขาจะทำยังไง จะ Scan QR Code มั๊ยหรือยังไง สิ่งที่น่าสนใจอย่างที่ 2 คือเนื้อหาของสัมนาของ AWS Kata มักจะเน้นไปที่เปิดโอกาสให้ได้ลองเล่นและทดลองใช้งาน AWS และอย่างที่บอกงานนี้เหมาะสำหรับ Start-ups และ Developers ทำให้ยิ่งอยากรู้ว่า ทีม AWS APAC จะทำอย่างไรหรือมีแนวทางนำเสนออย่างไร นอกจากนี้ก็เป็นเรื่องเกี่ยวกับ Start-ups ล้วนๆ ในเรื่องของ Venture Capital, Funding และ Pitching

พอเข้าไปในงานเจอผู้นำแก๊ง Joe Ziegler ผมเคยฟัง Joe บรรยายในงาน AWS Summit ที่อินเดีย ก็รู้เลยว่างานนี้สนุกแน่ เปิดงานด้วยใครใช้ Amazon บ้าง เริ่มจากวิดีโอ NASA JLP และแคมเปนจ์ใหม่ชื่อ Activate เมื่อเช้าเพิ่งดูใน Youtube T_T เป็นแคมเปนจ์เพื่อช่วยเหลือ Start-up ในการเข้าถึงแหล่งข้อมูลและเครื่องไม้เครื่องมือต่างๆ ในการใช้งาน AWS หลังจากนั้นก็เข้าสู่ช่วง Customer Speaker มี Stamp มาเล่าเกี่ยวกับการเริ่มใช้ AWS ว่าเริ่มอย่างไร และ Wongnai มาเล่าเรื่องการใช้งาน Elastic Scaling ของ Wongnai และบริการอื่นๆ ที่ Wongnai เล็งไว้ว่าจะใช้งานในอนาคต หลังจากนั้นก็เข้าเนื้อหาของ Markku Lepistö มาอธิบายเกี่ยวกับ AWS ว่ามีบริการอะไรบ้าง จะใช้งานขั้นเริ่มต้นได้อย่างไร (MVP:Minimum Viable Product) แล้ว Lean Start-up กับ AWS ทำได้อย่างไร อ้อแนะนำหนังสือ Lean Start-up ลองหามาอ่านนะครับสนุกมาก ตบท้ายด้วย Joe Ziegler มา Live Demo เรื่องทำ App พร้อมรองรับ Elastic Scaling แบบไม่ต้องสนใจเรื่อง Infrastructure บลาๆ มากนัก ด้วย Elastic Beanstalk อันนี้ช่วยให้เข้าใจเกี่ยวกับ Benefit ของ Cloud และ AWS ได้ง่ายมากคุณมีหน้าที่แค่เขียน App เท่านั้นส่วนอื่นๆ Elastic Beanstalk จัดการให้ และ Live Demo ก็สนุกสไตล์ Joe Ziegler ล่ะครับ

เนื่องจากเวลาสัมนาช้ากว่ากำหนดมากและเย็นมากแล้ว ผมก็เลยไม่ได้อยู่สัมนาต่อ ในหัวข้อ Getting to Profitability on AWS ที่จะพูดถึงเรื่อง Total Cost of Ownership (TCO), The six best practices for cost aware architecting ซึ่งเรื่อง Cost Aware Architecting เป็นหัวข้อที่เป็นคำตอบที่ว่าใช้ AWS อย่างไรไม่ให้เสียตังค์เยอะนั่นเอง เรื่องนี้เคยเข้า Live Webinar มาแล้วรอบนึงก็เลยกลับบ้านก่อน แฮะๆ

แปะ Slide AWS Cloud Kata ที่ฮ่องกงเอาไว้ให้ เพราะคล้ายๆ กันกับ AWS Cloud Kata ที่กรุงเทพ

Slide ของ Pieter Kemps มีเนื้อหาครอบคลุมแทบจะทุกเรื่อง รวมไปถึงเรื่อง Cost Aware Architecting ด้วย

ไหนๆ ก็จะ blog เรื่อง AWS แล้วก็เอาให้หมดเลยละกัน อันนี้เป็น Video + Webinar

A Walk through the AWS Cloud App Hosting on AWS

How to Reduce Your Spend on AWS

Total Cost of (Non) Ownership in the Cloud

หลังจาก blog เรื่องแหล่งความรู้ OpenStack ไป ก็นึกสนุกทำ OpenStack Cheat Sheet ไป 2 เวอร์ชั่น และมีปัญหาจุกจิกกับ Neutron (Quantum) ที่ Lab Cloud Specialist เนื่องจาก Network Architecture ของ Lab ผิดไปจากที่ OpenStack Guid แนะนำไว้ก็เลยทำให้เกิดอาการงงกับ Neutron และปัญหาหนึ่งที่พยายามจะ Debug ก็คือ OpenVSwitch ซึ่งมันก็ดีนะ แต่ Debug งงมาก ก็เลยไปค้นคำถามจาก RedHat OpenStack ได้ข้อมูลที่น่าสนใจดังนี้

  • PackStack All-in-One DIY Configuration อธิบายว่าเกิดอะไรขึ้นกับ OpenVSwitch ในแต่ละขั้นตอนและวิธีการ Debug
  • Networking in too much detail อันนี้อธิบายแต่ละจุดของ Network ในส่วน Instance, Compute Host และ Network Host
  • OpenStack Networking with Neutron on RDO อันนี้เป็น Video อธิบาย้กี่ยวกับ Neutron เครื่องมือในการตรวจสอบและ Debug OpenVSwitch