Living Mobile Technology Stack & Tools in 2021
เนื่องในโอกาสปีใหม่ 2022 นี้แล้วก็เลยอยากจะเขียนบันทึกสิ่งต่าง ๆ ที่ทาง Living Mobile ของเราใช้งานอยู่บันทึกไว้เป็นความทรงจำของบ. เราเสียหน่อย ก็ขอแยกเป็นส่วน Application, Infra และก็ Tool ต่าง ๆ แล้วกันนะครับ
ฝั่ง Application
Programming language ที่ใช้งานกับ Backend หลังบ้านและเว็บไซต์ที่เป็นโค้ด Legacy ที่ทำกันมานานก็ยังคงใช้ PHP และ Laravel framework แต่ในปีหลัง ๆ มาทีม Developer ตัดสินใจเลือกใช้ Javascript มากขึ้น และมองเป็นภาษาหลักในอนาคต ซึ่งจะใช้ทั้งโค้ดฝั่ง API หลังบ้าน โดยใช้ Node.js ควบคู่กับ Express และฝั่ง Frontend ซึ่งก็เลือกใช้ framework Vue.js
ทางทีม Data
ที่ทำข้อมูลก็จะใช้ภาษา Python เป็นหลัก มีการทำ Visualization ข้อมูลผ่าน Grafana และ Google data studio เพื่อให้ทาง Business และ PO (Product owner), PM (Project manager) ใช้งานในการดู statistic ต่าง ๆ
ตอนนี้กำลังพยายามสร้าง Data pipeline เพื่อให้ผ่อนงาน Manual ต่าง ๆ ออกไปในการจัดการข้อมูล โดยใช้ Service ใน AWS ทั้ง EC2, Lambda, S3, Athena
ทีม Mobile application
ทีม iOS ภาษาที่ใช้ Objective-C และ Swift ซึ่งในทีมก็มีการทยอย migrate โค้ด Legacy ต่าง ๆ ให้เปลี่ยนจาก Objective-C มาเป็น Swift อยู่เรื่อย ๆ เนื่องจาก Objective-C เป็นภาษาเก่าแล้วพบปัญหาเรื่องการจัดการ memory ที่ไม่ดีเท่า Swift
ทีม Android ภาษาที่ใช้ก็แน่นอนไม่พ้น Kotlin กับ Java ในการเขียน Android application Developer ซึ่งนำไปพัฒนากับตัวแอพ Wongnai POS by FoodStory
ทีม QA
ในปีนี้ก็มีขยายทีมมากขึ้น เริ่มต้นทำ Automate test เพิ่มขึ้น โดย Appium และ Robot framework
ด้าน Infrastructure
ยังไม่มีการเปลี่ยนอะไรมากในปีนี้ Service ที่ใช้ได้ดีอยู่ ก็คือ RDS ซึ่งในอดีตใช้ RDS PostgreSQL ปกติ แต่ได้เปลี่ยนมาใช้ Aurora PostgreSQL ตั้งแต่ต้นปี 2020 ซึ่งก็ใช้งานได้ดี เนื่องจากลดการ maintenance บางอย่างได้เช่นการเพิ่ม storage กรณี storage ใกล้เต็ม ก็ต้องมาวุ่นวายแจ้งปิดระบบ มี downtime เกิดขึ้น แต่ Aurora ไม่มีการกำหนดขนาด storage สามารถบันทึกข้อมูลได้เรื่อย ๆ (แต่ก็นะมีค่า storage ที่เพิ่มขึ้นอยู่ดี) และที่ชอบและใช้งานบ่อยก็คือ Performance monitoring เพื่อเอาไว้ตรวจสอบ query ได้ว่ามี load query อะไรเกิดขึ้นหนัก ๆ บ้างในช่วงเวลานั้น ๆ ช่วยลดเวลา investigate ปัญหาได้ดี
Service ฝั่ง Backend ที่เสียตังแล้วรู้สึกว่าคุ้มค่าก็คือ Sentry.io ซึ่งเป็น tool สำหรับดัก Error ต่าง ๆ ที่เกิดขึ้นบน Server ทำให้เราสามารถเข้าไปดูได้ว่า Error เกิดที่บรรทัดไหน ตอนที่ input parameter ใดที่ทำให้เกิดปัญหา ครบครันเรื่อง App integration ก็เอามาแจ้งเตือนทีมผ่าน channel ใน Slack แยกเป็นทีม ๆ ได้ด้วย
Tool ต่าง ๆ ที่ใช้ในบริษัท
การสื่อสารจะใช้ Slack ในการติดต่องานกัน ซึ่งปี 2022 นี้เราตัดสินใจใช้ Slack pro กันแล้ว สามารถใช้ integration ต่าง ๆ ได้อย่างเต็มที่ไม่ติด limit 5 apps เช่นเดิมแล้ว ซึ่งก็มีนำมาใช้ในการแจ้งเตือน Fail และ Error ต่าง ๆ ในระบบ
ส่วน Task management tool ตอนนี้บริษัทกลับมาใช้ JIRA อีกครั้ง และใช้ Confluence ในการบันทึกและทำ Document ต่าง ๆ
ทีม UI/UX ใช้ Figma เป็น tool หลัก ในการทำงานร่วมกับทีมอื่น ๆ ทั้งทีม Dev เองและทีม Product & Sales ในปีนี้ทีม UI/UX นั้นซีเรียสเรื่องการทำ Usability test กับทาง stakeholder ก่อนที่จะ confirm design ให้ทาง developer เริ่มทำงานด้วยการใช้ Tool ต่าง ๆ เช่น Maze design tool และ Usability hub
สิ่งที่พัฒนาและเรียนรู้เพิ่มเติมในปี 2021 ที่ผ่านมา
ทีม Backend และ Website นั้นได้เพิ่ม Process ในการรีวิวโค้ดเข้าไปด้วยเพื่อที่จะได้ให้คนในทีมได้ตรวจสอบและเรียนรู้การเขียนโค้ดซึ่งกันและกัน โดยทำการเปิด Pull request ใน BitBucket พอทีมงานรีวิวแล้ว Approve ให้ผ่านก็ให้ทำการ Merge pull request นั้นเข้า branch กลาง ซึ่งตอนที่ merge นั้นก็สามารถเลือกเปลี่ยนสถานะ Task ใน JIRA ได้รวมถึงมีการทำ BitBucket pipeline เพื่อทำการ deploy อัตโนมัติขึ้น Server environment ทดสอบ ก็ช่วยลดเวลาในการ manual deploy ซึ่งก็ช่วยลดคอขวดของคนที่มีหน้าที่ deploy ลงได้ระดับนึง
Service ใน Firebase ที่ทดลองใช้เพิ่มเติมก็คือ Firestore ซึ่งเอามาทดลองใช้กับโปรเจคใหม่ ๆ จากเดิมที่เคยใช้งานแต่ Realtime database
ทีม Website ได้ทดลองทำสิ่งใหม่ที่ค่อนข้างท้าทายคือเรื่องที่เราต้องการให้เว็บไซต์สามารถสั่งพิมพ์ใบการสั่งอาหารไปยัง Thermal printer ได้ ซึ่งเดิมทีเราใช้ Mobile device ซึ่งอาศัย Driver หรือ SDK ของเครื่องพิมพ์นั้น ๆ ในการสั่งพิมพ์ ทำให้การเชื่อมต่อเครื่องพิมพ์ผ่าน Web Browser นั้นเป็นเรื่องที่ใหม่สำหรับเรา สุดท้ายทางเราทำการประยุกต์ใช้ ElectronJS เพื่อเปิด Node Server ภายในเครื่องแล้วสั่งพิมพ์ผ่าน Library printer ของ Node แทน
มีการนำ Cloud task มาจัดการ queue ในการทำงานของ API เพื่อไม่ให้ Flow การทำงานผิดลำดับ
ทีม Accounting
ปีนี้ได้ใช้งาน Snipe-IT เป็น asset management tool เพื่อให้งานบัญชีที่เป็นระบบ การบริหารจัดการด้านอุปกรณ์ที่ใช้งานภายในบริษัทฯ ก็ถือเป็นส่วนสำคัญในการจัดทำบัญชี เพราะรวมๆ แล้วถือว่ามีมูลค่าที่สูงทีเดียว (MacBook 100 เครื่อง ขั้นต่ำก็ 3 ล้านบาทละ ) และเพื่อให้สามารถระบุความมีอยู่จริงของตัวอุปกรณ์ที่สามารถตรวจสอบได้อย่างรวดเร็ว ซึ่งทางทีม Account นั้น ได้เลือกใช้ Snipe-IT มาเป็นตัวช่วยในการทำงาน จากเดิมที่ใช้เพียง Google Sheet
- จุดเด่น ด้วยการใช้งานที่ค่อนข้างรวดเร็ว ใช้งานได้ง่าย ไม่ซับซ้อน และราคาค่าบริการถือว่าค่อนข้างถูกเลยทีเดียว การทำงานสามารถประยุกต์ใช้ได้อย่างดี โดยนำมาเพื่อบริหารจัดการอุปกรณ์ของบริษัทว่าปัจจุบันนั้น ตัวอุปกรณ์ถูกใช้งานอยู่กับใคร ที่ไหน และเมื่อไหร่จะครบกำหนดคืน เพียงแค่ทำการ Check-Out / Check-In ด้วยการสแกน Barcode ของตัวอุปกรณ์ ไม่ต้องสร้างเอกสารให้ยุ่งยาก
- จุดด้อย หากผู้ใช้งานเน้นเรื่องของการใช้งานด้าน report อาจจะยังไม่ค่อยตอบโจทย์มากนัก เพราะค่อนข้างมีให้เลือกน้อย และการคำนวณค่าเสื่อมราคา ทางระบบจะมีการคิดที่ค่อนข้างไม่ตรงกับหลักการทางบัญชีมากสักเท่าไหร่
สรุป ตัวโปรแกรม เน้นเรื่องของการบริหารจัดการดีกว่าเพราะทำงานได้รวดเร็ว เข้าใจง่าย ส่วนการทำงานข้อมูลทางบัญชี ซึ่งโดยปกติ ทางบัญชีจะทำข้อมูลเกี่ยวกับตัวเลขทางการเงินแยกออกมาต่างหากอยู่แล้ว
โปรแกรมบัญชี จาก Flow Account สู่ TR Cloud
ถ้านับจากระยะเวลา 3 ปีของ FoodStory นี้ ถือว่าเป็นปีที่ค่อนข้างเติบโตที่เรียกว่า รวดเร็วมาก ทั้งยอดขาย และโมเดลธุรกิจ ที่เกิดขึ้นใหม่ๆ อยู่ตลอด การปรับเปลี่ยนโปรแกรมบัญชี ถือว่าเป็นเรื่องใหญ่ เพราะเป็นสิ่งที่ทางทีม Accounting ต้องอยู่กับสิ่งนั้นอีกยาวนาน
Flow Account ที่ FoodStory ได้นำมาใช้จนถึงปี 2021 นั้น ถือได้ว่าเป็นโปรแกรมที่ดีในระดับหนึ่ง ด้วย Interface ที่สวยงาม ใช้งานได้ง่าย เพราะสำหรับธุรกิจที่ไม่มีความซับซ้อน ด้วยการใช้งานที่เน้นการออก Quotation / Tax Invoice / Receipt โดยที่คนทำงานไม่ต้องมีความเข้าใจทางบัญชีก็สามารถทำงานได้
นับแต่ ปี 2020 เป็นต้นมา ทาง FoodStory ด้วยการเจริญเติบโตทางจำนวน Transaction / Business Model ที่เพิ่มขึ้น การใช้ข้อมูลทางบัญชีเพื่อนำมาวิเคราะห์ธุรกิจมีความจำเป็นอย่างมาก ไม่ได้มองพื้นฐานเพียงแต่ งบกำไรขาดทุน เหมือนแต่ก่อน การใช้งาน Flow Account เริ่มมีข้อจำกัด เพราะทางทีม Account ต้องใช้งานข้อมูลที่เริ่มมีความซับซ้อน เช่น การทำงบกำไรขาดทุนแยกตาม Project และแผนก เป็นต้น
การนำ TR Cloud มาใช้เพื่อเติมเต็มในสิ่งที่ FoodStory ต้องการมากขึ้น ได้แก่
- ระบบ Inventory ที่มีการจัดเก็บข้อมูล Serial ของสินค้าที่ขายให้กับลูกค้า
- ระบบ ใบส่งของที่ระบุ Serial ให้ลูกค้า
- การแบ่งรายละเอียด รายได้/ค่าใช้จ่าย ตาม Business Unit หรือ ตาม Project
- ระบบงบประมาณ
- การกระทบยอดเกณฑ์คงค้าง สำหรับรายการต่างๆ
- การจัดทำต้นทุนสินค้าที่ขายให้เป็นระบบ
โดยทั่วไปแล้ว ระบบต่างๆ ดังกล่าว จะอยู่ในระบบ ERP หรือโปรแกรมบัญชีระดับ Enterprise ทาง FoodStory ได้ทดลองแล้วเลือกใช้ TR Cloud เพราะตอบโจทย์ในการทำงานที่สามารถประยุกต์ให้เข้ากับ Business ได้ และส่วนสำคัญที่เรียกว่า สอดคล้องกับการพัฒนาของกิจการคือการทำ automation ที่ทาง TR Cloud ได้มีระบบ Open API ไว้ด้วย
ทางทีมบัญชีเองก็หวังว่า การพัฒนาดังกล่าว จะได้ให้ข้อมูลอันเป็นประโยชน์มากขึ้นต่อกิจการมากขึ้น ทั้งเรื่องของการประเมินสุขภาพการเงินของธุรกิจ และหวังว่าจะมีส่วนช่วยเป็นข้อมูลอันสำคัญกับการวางแผนธุรกิจต่อไป
เป้าหมายในปี 2022
เป้าหมายในปีนี้ตั้งใจจะให้ Developer ทุกทีมนั้นมีการเขียน Unit test ในทุก feature ที่ทำ พยายามลดการ crash ที่เกิดขึ้นใน application และพยายามผลักดันใช้งาน Typescript แทนที่ javascript ปกติมากขึ้นเพื่อลดข้อผิดพลาดในระบบ
รวมถึงมีการ revamp product บางอย่าง เพื่อเพิ่มประสิทธิภาพและสามารถรองรับโหลดได้มากขึ้นเพื่อตอบสนองการใช้งานของลูกค้าได้ดีขึ้นต่อไป
ฝั่ง Infra ก็จะมีการทดลองใช้ Service อื่น ๆ อย่าง ECS ซึ่งตอนนี้กำลัง Research และจะนำมาทดลองใช้กับงานในทีม Data กันดู และเพิ่ม Security ต่าง ๆ ให้ดีขึ้นกว่าเดิม
ขอบคุณทีมงานทุกคนที่ช่วยกันพัฒนาและนำเทคโนโลยีและเครื่องมือต่าง ๆ มาช่วยเพิ่มประสิทธิภาพในการทำงาน และช่วยกันรวบรวมข้อมูล จนบังเกิด Story Medium อันนี้ขึ้นมาได้ครับ
สุดท้ายนี้ใครสนใจสมัครเข้าร่วมทีมกับเราบริษัท Living Mobile สามารถติดต่อหรือยื่น Resume มาได้เลยนะครับ ที่อีเมล recruitment@livingmobile.me แล้วพบกันใหม่นะครับ
รายละเอียดบริษัท www.livingmobile.me
รายละเอียด product ของบริษัท www.foodstory.co