Education

Workshop Automate Software Development ด้วย Docker, Git, Phpunit, nginx, Jenkins step-by-step ตั้งแต่ setup ไปจน production

รอบ 1 เต็มแล้ว! สนใจคลิกสมัครรอบ 2

http://bit.ly/automate-software-development-2-eventpop1

ทำไมถึงต้องทำ Automate Development?

สิ่งสำคัญหนึ่งในการพัฒนา Software คือ ความเชี่ยวชาญใน Tool ที่ใช้ในการพัฒนา ไม่ว่าจะเป็น Docker, Git, PhpUnit, NGINX, Jenkins
แต่ยังมีอีกสิ่งหนึ่งที่สำคัญไม่แพ้กันกับความเชี่ยวชาญ นั่นก็คือ การทำให้ Tool แต่ละตัวทำงานร่วมกันอย่างเป็นระบบ เพื่อทำให้เกิดระบบการพัฒนาในรูปแบบ Automate เพื่อลดปัญหาในส่วนของการทำซ้ำอันจะทำให้เกิดปัญหา error จากความผิดพลาดของมนุษย์ตามมา

เนื้อหาของ Workshop นี้จึงมุ่งเน้นไปที่การทำงานร่วมกันของ Tools เหล่านี้ เพื่อส่งเสริมให้เกิดการทำงานแบบ Automation

รูปแบบของ Event

ท่าต่างๆที่ใช้ในการทำให้เกิด Automation process นั้น มีแตกต่างกันไปมากมายตามที่แต่ละทีมเลือกใช้
ครั้งนี้ทางวิทยากรจะเอารูปแบบการ Automate process ของ 3DS Interactive ในงาน Production จริงๆ ที่ผ่านวิวัฒนาการลองผิดลองถูกกันหลายปีมาแชร์

ซึ่งแน่นอนว่าการพัฒนา Software นั้นไม่มีวิธีที่สามารถบอกได้ว่าดีที่สุด ดังนั้นการศึกษาแนวคิดจากวิธีของทีมอื่นๆจึงเป็นอีกแนวทางหนึ่ง ที่สามารถใช้ในการยกระดับมาตรฐานของวิธีการพัฒนาของทีมตัวเองได้ และคงไม่มีวิธีไหนที่จะเรียนรู้ได้ดีเท่ากับการจัดเป็น Workshop ทำไปพร้อมๆกัน

บุคคลที่เหมาะกับ Workshop

1. Developer ที่ยังไม่มี Automate development stack เป็นของตัวเอง ก็จะได้มี idea ที่สามารถนำไปใช้ได้
2. Developer ที่มี Automate development stack อยู่แล้ว ก็จะได้มี idea อื่นๆนำไปปรับใช้เช่นกัน
3. Developer ที่รู้จักเทคโนโลยีเหล่านี้อยู่แล้ว และอยากเพิ่มเติมความรู้ในการ config ค่าต่างๆเพื่อใช้ใน Production
4. Developer ที่มีข้อสงสัยเหล่านี้
- จะเริ่มใช้ Docker ในเครื่อง Development อย่างไร?
- มีหลาย Project เหลือเกินจะ switch งานไปมาอย่างไร?
- Branch ใน Git ใช้อย่างไร สำคัญด้วยเหรอ?
- ใช้ FTP deploy งาน ไฟล์ไปไม่ครบ แล้วพังตลอด ทำอย่างไรดี?
- เอา Config file เก็บไว้ที่ไหนดี?
- อยากทำ Automate test แต่ไม่รู้จะเริ่มอย่างไร?
- Dependency Injection คืออะไร?
- จะใช้ Unit test หรือ Functional Test?
- เขียน Test แบบไหน ถึงจะไม่เยอะไป?
- เขียน Program อย่างไรถึงจะรันได้ใน Load balancer?
- ต้อง Config อะไรบ้างนะ ถึงจะเอา docker, nginx, php ขึ้น Production อย่างมีประสิทธิภาพ?
- จะ Deploy งานเข้า Load balancer อย่างไร?
- ใช้ Server หลาย Version บน Production อย่างไร?
- จะเริ่มใช้ Docker ใน Production ท่าไหนดี?
- Database บน Production ไม่ตรงกันกับ UAT ทำอย่างไรดี?
- ถ้า Deploy แล้ว Production พัง จะทำ rollback อย่างไรดี?
- Release แล้วเจอ Bug จะแก้อย่างไร ไม่ให้ code version ปัจจุบันหลุดไปด้วย?
- ฯลฯ

Agenda

วันที่ 1
- Setup Docker, docker-compose และวิธีการใช้ Docker container ในการพัฒนา Software
- Setup git, git-flow ทำความเข้าใจการใช้ Branch เพื่อทำงานเป็นทีม
- Setup nginx เป็น reverse proxy สำหรับการพัฒนาหลาย Project ในเครื่องเดียว
พักทานอาหารร่วมกัน
- ทำความเข้าใจหลักการทำ Automate Test และ Dependency Injection เครื่องมือหลักในการทำ Testable Code
- Setup phpunit และการออกแบบ Test case แบบ unit test และ functional test อย่างเป็นระบบ
- Setup end-to-end Test environment เพื่อใช้ทดสอบ functional test ด้วย Docker
- Setup loop การ develop => test => refactor และลอง refactor code ไปด้วยกัน
- Setup php-cs-fixer และ phpstan เพื่อตรวจสอบปัญหาใน code

วันที่ 2
- Setup Jenkins เพื่อ deploy ระบบด้วย Docker บน Deployment Environment
- Setup Jenkins เพื่อทำระบบ automate deploy โดยใช้ git และ git-flow
- ทำความเข้าใจ Configuration ของ ubuntu, docker, nginx และ php-fpm ที่ควรรู้ใน Production
พักทานอาหารร่วมกัน
- Setup Jenkins ให้ใช้ Test case ที่สร้างไว้ในการ run automate test ก่อนจะ deploy ขึ้น environment จริง
- Setup Jenkins ให้ตรวจสอบ schema ของ Production กับ UAT เพื่อ confirm Schema ของ Database ก่อนขึ้น Production
- Setup Jenkins ให้สามารถ Rollback ระบบกลับมาที่ version ก่อนหน้าได้เลยถ้าเกิดปัญหาใดๆจากการ deploy

** โค้ดที่ใช้ใน workshop เป็นภาษา PHP

เมื่อจบ Workshop คุณจะสามารถนำเอาเทคนิคเหล่านี้ไปประยุคต์ทำระบบ Automate deployment ของทีมตัวเองได้

วิทยากร

1. คุณ ไชยพงศ์ ลาภเลี้ยงตระกูล

CTO/CEO บริษัท 3DS Interactive

2. คุณ Praparn Lungpoonlarp
Infrastructure Engineer, Network Engineer, System Engineer

3. คุณ นเรศ เก็จรัมย์
โปรแกรมเมอร์ บริษัท โดมคลาวด์

สิ่งที่ต้องเตรียมมา
1. คอมพิวเตอร์ laptop (ได้ทั้ง mac และ windows)


สถานที่จัดงาน

ห้องสัมมนาชั้น 3 บริษัท 3DS INTERACTIVE
Google Map : https://goo.gl/maps/XZx7x9jG95t

การเดินทาง

รถไฟฟ้า+เดิน : ลงรถไฟฟ้าที่สถานี BTS กรุงธนบุรี ออกทางออก 4 แล้วเดินย้อนกลับมา 5 นาที
จะผ่านโค้งขวาเดินอีก 5 นาที ก่อนถึงเสนาเฟสให้ข้ามถนน แล้วเข้าในซอยสาธรแมนชั่น 1 เข้ามาในซอย 100 เมตรอยู่ขวามือ จะมีป้ายอยู่หน้าบริษัทเขียนว่า 3DS INTERACTIVE

รถไฟฟ้า+มอเตอร์ไซค์วิน
: ลงรถไฟฟ้าที่สถานี BTS กรุงธนบุรี ออกทางออก 2 หน้าอาคารไทยศรี เรียกมอเตอร์ไซค์วินหน้า 7/11 บอกว่าไป ซอยสาธรแมนชั่น 1 ข้างเสนาเฟส เข้ามาในซอย 100 เมตรอยู่ขวามือ จะมีป้ายอยู่หน้าบริษัทเขียนว่า 3DS INTERACTIVE

รถยนต์ : ไม่แนะนำให้เอารถยนต์มาเพราะหน้าบริษัทไม่มีที่จอดรถ แต่ถ้านำรถยนต์มาสามารถจอดได้ที่ห้างเสนาเฟสไกล้ๆบริษัท ไม่รับประกันว่าจะมีที่จอดว่างและต้องเสียค่าจอดรถให้กับทางห้างเอง โดยจอดฟรี 2 ชั่วโมงแรก ชั่วโมงต่อไปชั่วโมงละ 20 บาท ในกรณีที่ซื้อสินค้า บริการภายในศูนย์ตั้งแต่ 200 บาทขึ้นไป และมีประทับตรา SENA fest ณ จุด E-Stamp 4 ชั่วโมงแรก คิดค่าบริการ 20 บาท ชั่วโมงต่อไปชั่วโมงละ 20 บาท

2f6f8f6467856ab1cdc0fb6ceebd8b2fe4629315
Organized by
3DS Interactive Co.,Ltd.