Startup Tech Stack ที่ GetLinks

ใน Startup การเลือก Tech Stack สักอันเป็นการตัดสินใจที่ยาก เพราะตัวเลือกในสมัยนี้มันเยอะเสียจนเลือกไม่ถูก ไม่ใช่แค่นั้น ปัญหาคือถ้าเลือกแล้ว ปรากฏว่าไม่เหมาะกับสิ่งที่เราจะทำ หรือผ่านไป 2 เดือน technology นี้ปิดตัวอาจจะถึงขั้นทำใหม่หมด ตอนเราเลือกก็ใช้เวลาค้นคว้าสักพักเลย

สิ่งแรกที่ทำคือเราเลือก API First approch ในสมัยก่อน App ยังไม่บูมคนก็ทำเว็บกันอย่างเดียว แล้วพอช่วง Instagram มาก็มีกระแส Mobile (App) First ขึ้นมา บางคนก็ไปทำ Mobile App อย่างเดียว แต่ในที่สุดเมื่อ Startup โตขึ้นก็ต้องมีทั้ง Web และ Mobile เราก็เลยเลือกทำ API first และมอง Web, iOS, Android เป็นแค่ client ที่มาเรียกใช้ API เท่านั้น เผื่ออนาคตเราอาจจะเปิด API ให้คนภายนอกใช้ได้ด้วย

Web

ฝั่งเว็บเราเลือก Node.js เพราะข้อดีของมันนำหน้าตัวเลือกอื่นๆ มาก ถึงแม้จะมีข้อเสียบ้างนิดหน่อย แต่เรียกว่าน้อยมาก
PHP หาคนทำเป็นง่ายแต่หาคนเก่งจริงๆ ยาก
.Net เก่า และผูกกับ Micro$oft เกินไป
Ruby พัฒนาง่าย แต่กินทรัพยากร และก็หาคนทำเป็นยากด้วย
Go หาคนทำเป็นยากมาก
J2EE เคยมีโอกาสทำ Strut2 อยู่ 1 เดือน เลิกคุย

Backend API

Module ของ API เราเลือกอยู่ระหว่าง Loopback กับ Restify สุดท้ายก็เลือก Restify จากความยืดหยุ่นของมัน และจากการถามคนที่ใช้ Loopback หลายๆคนบอกว่าทรมานกับมันมากๆ จากข้อจำกัดต่างๆของมัน (ตอนนี้ Restify ทำงานได้ดีแล้ว ก็อยากกลับมาศึกษา Loopback เหมือนกันว่ามันดีไม่ดียังไง)

Database

MongoDB vs MySQL vs PostgreSQL vs OrientDB MongoDB เป็น document databases เป็น NoSQL database มันก็ดีสำหรับจะดึงข้อมูลออกมาเป็น JSON แต่ไม่เหมาะกับ database ที่มีการปฏิสัมพันธ์กันหลายๆ Table หรือเรียกว่า JOIN อนาคตถ้ามีเหตุจำเป็นอาจจะได้ใช้ NoSQL แต่ตอนนี้แอปของเรา business logic ซับซ้อนและจะต้องมีการ JOIN หลาย table แน่นอน เราจึงต้องเลือกใช้ RDBMS (Relational database management system) ตัวเลือกมีแค่ MySQL กับ PostgreSQL, ฝั่ง MySQL โดน Oracle ซื้อไปดอง ส่วน PostgreSQL นอกจากที่เจ๋งอยู่แล้ว ก็ออก feature ใหม่เทพๆ ขึ้นมาเรื่อยๆ เราก็เลยเลือก PostgreSQL, ส่วน Graph database อย่าง OrientDB หรือ Neo4j คิดว่าเกินตัวไป GetLinks ไม่จำเป็นต้องใช้ขนาดนั้นหรอก

Web Frontend

เลือกระหว่าง Angular vs React, Angular เป็นทั้ง framework ส่วน React เป็นแค่ Lib ในส่วนของ View ใน MVC และแนวคิดของทั้งสองตัวนี้ต่างกันหลายอย่าง เช่น React เป็น Virtual DOM ข้อเสียของ React คือ debug HTML ยากกว่าหน่อย แต่ Angular มี Learning curve สูงกว่ามาก สุดท้ายเราก็เลือก React จากการคุยกับหลายๆคน แม้แต่ Kaidee.com ก็เลือกใช้ React มาตั้งแต่มันออกใหม่ๆ ผ่านมาหลายปีก็ยังพอใจกับมันอยู่ ก็น่าจะรับประกันอนาคตได้ระดับนึง

ตัว Frontend frameworks มีอยู่ช่วงนึง เราไม่มี designer ซักคนในทีม เราก็เลยคิดว่าลองใช้ Google Material Design Lite กันมั้ย ทุกอย่างก็จะออกมาเป็น Material Design หมด เรียบง่าย สวยงาม และก็ใช้มาพักนึงก็รู้สึกว่ามันยังพัฒนาไม่เสร็จ มีหลาย feature ที่อยากใช้แต่ไม่มี แต่ใน Bootstrap เรารู้สึกว่ามันครบครัน ทุกอย่างที่ต้องการ และในที่สุดก็ได้ Designer มาร่วมทีม เราก็เลยเลิกใช้ MDL มาใช้ Boostrap อย่างเดียว

iOS/Android

แน่นอนว่าไม่เคยมองตัวเลือก Hybrid เลย ยังไงก็ต้อง Native เราใช้ Swift มาตั้งแต่มันออกใหม่ๆ เราเชี่ยวเรื่อง Mobile อยู่แล้ว ถึงจะเป็น Native แต่ก็ใช้เวลาพัฒนาไม่นานมาก ที่ผ่านมาเราออกแอปใหม่กันไปหลาย version ทั้งรื้อใหม่ ทำใหม่กันเยอะมาก iOS แน่นอนว่าใช้ Cocoapod ส่วน Android เรามี CI ของ CircleCI ซึ่งมันให้ใช้ฟรี 1 project ก็เลยใช้ automate upload ขึ้น alpha หลังจาก push Git อยู่

Git flow

Git flow เป็นเรื่องพื้นฐานที่ทุกคนในทีมต้องรู้ ถ้าไม่รู้ มันก็จะเป็นสิ่งแรกที่ต้องเรียนก่อนเข้ามาในทีม

Server Infrastructure

เราลองใช้มาหลายเจ้า และเนื่องจากเราไม่ใช่เทพ infra ก็จะพยายามเลือกอันที่ไม่ใช้งานยากเกินไป
Openshift ฟรี ถูก แต่เข้าไปจัดการยาก
Digital Ocean ใช้ง่ายมาก แต่เราไม่ใช่เจ้าของจริงๆ มีปัญหาแล้วตาม support ยาก
Heroku อัพเดท software ใหม่ตลอดเวลา ใช้งานโครตง่าย แต่แลกกับราคาที่ใช้ไปสักพักจะแพงจนรับไม่ได้
Microsoft Azure แพงตามสไตล์
IBM bluemix เหมือนจะฟรี แต่ฟรีติ๊ดเดียว ที่เหลือแพง

AWS ใช้ตอนแรกงงๆ แต่พอชินแล้วก็โอเค ราคาถูก ประสิทธิภาพดี และมีบริการล้านแปดที่ทำงานร่วมกันได้อยู่ในนั้น ที่เสริมความสามารถกันสุดๆ มาที่เดียวจบ ตั้งแต่จดโดเมนยัน Load balance

Third party

Sendgrid เอาไว้ส่งเมล์ ราคาโครตถูก เทียบกับ Mailchimp ราคาต่างกัน 200 เท่า และมี feature เยอะมาก เยอะกว่า Mailchimp เยอะ ใช้งานง่าย ตัวออกแบบก็ใช้ง่ายกว่า สรุปว่าดีกว่าทุกด้าน แต่เมล์เก่าๆ กับในทีมบางคนยังชินกับ ​Mailchimp อยู่ก็ยังให้ใช้อยู่บ้าง

Slack เป็นแอป Chat ในทีม น่าจะรู้จักกันทุกคนอยู่แล้ว เมื่อก่อนเคยทำ Hubot ไว้บน Heroku สมัยที่ Heroku ให้ใช้ฟรี ตอนนี้ Heroku ให้ฟรีแค่ 18 ชั่วโมง เลยลบทิ้งไปแระ จะให้จ่าย $7 ทุกเดือนเพื่อ bot ก็ใช่ที่

Project management software

ลองมาเยอะมากกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกกก ไม่ไหวจะเขียน สุดท้ายมาจบที่ PivotalTracker ซึ่ง CEO Oozou แนะนำมา ราคาต้องจ่ายต่อปีประมาณ 13,000 บาท (STARTUP L) ตัดใจซื้อ หลังจากได้ใช้ก็ถือว่าคุ้มค่า เหมาะกับบริษัทที่ Agile เต็มตัว แต่ Agile ที่ GetLinks ต่างจากที่อื่นหน่อย คือ CTO คุมทุกอย่าง ;p และตัดขั้นตอนที่ต้องประชุมเยอะๆ ออกไปหมดเลย

สิ่งที่อยากลองในอนาคต

มี Tech Stack บางตัวที่อยากลองใช้ แต่ยังไม่ว่าง research เช่น เอา Redis มาทำ Authen เอา Cloudfront มาทำ CDN และกัน DDOS เอา Docker กับ Jenkins มาทำ CI เอา ElasticSearch มา cache Search

หวังว่าบทความนี้จะมีประโยชน์ ใครมีคำแนะนำ หรืออยากเสนอ Tech Stack ที่ใช้มาคุยกันได้ครับ

PS. GetLinks หา Backend Node.js กับ Frontend ร่วมทีมเพิ่มอยู่นะครับ สนใจส่งเมล์มาที่ pichaya@getlinks.co ได้

Like what you read? Give Pichaya Srifar a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.