เบื้องหลัง และ วัฒนธรรมของเรา Jitta.com

Hunt
Jitta Engineering
Published in
3 min readNov 8, 2015

ในบทความนี้อยากเล่าถึงส่วนเฉพาะ Engineering เท่านั้น ถ้าอยากรู้เกี่ยวกับพวกเราเพิ่มเติม สามารถอ่านได้ที่ https://www.jitta.com/about

ตัวเลขที่น่าสนใจ

เรามี 6,000 หุ้นในระบบตอนนี้ จาก 4 ตลาดหลักทรัพย์​

United States(5,000+), Thailand(600+), Singapore (700+) และ Vietnam (600+)

มีตัวเลขทางการเงินที่ผ่านการคำนวนทุกวันกว่า 50 ล้านตัวเลข ทั้งวิเคราะห์ และหาความสัมพันธ์ของบการเงินของบริษัททุกบริษัท อย่างน้อย 10 ปีย้อนหลัง เพื่อสะท้อนทุกมิติของบริษัทนั้นๆ

“ ณ เวลานี้ความท้าทายของทีม Engineer เรา ไม่ใช่จำนวนผู้ใช้ที่ใช้งาน แต่เป็นคุณภาพของข้อมูลที่ไม่เคยมีใครสร้างตัวชี้วัดทางคุณภาพของบริษัทที่ควรลงทุน และช่วยให้นักลงทุนตัดสินใจลงทุนได้ดียิ่งขึ้น ”

การทำงาน

พวกเราทุกคนเชื่อในการที่ Engineer จะต้องได้ดูแลประสบการณ์ผู้ใช้แบบ End-to-End ตั้งแต่เริ่ม Design มุมมองของผู้ใช้ ที่เน้นความเรียบง่าย จนถึงออกมาเป็น Product ทุกคนในทีมมีความสามารถทั้งเชิงกว้างและเชิงลึก สามารถทำหน้าที่แทนกันได้ จึงทำให้ทีมมีความยืนหยุ่นสูง พร้อมกับการเปลี่ยนแปลงและพัฒนาสิ่งใหม่ๆได้ตลอดเวลา เราอัพเดทภาพ และทิศทางจากผู้บริหารทุกเดือน เพื่อให้ทั้งทีมเข้าใจในทิศทาง และมุ่งหน้าไปพร้อมกันได้เสมอ

เรามี Engineers ทั้งหมด 5 คน (รวม CTO ด้วย) ใช้ Continuous Integration และ Continuous Delivery โดย Engineer จะอัพเดท Code และรับผิดชอบใน Commit นั้นๆเสมอ ซึ่งทุก Commit จะต้องรัน Full Test เสมอ เมื่อผ่านการทดสอบแล้ว (On Green) ระบบจะทำการ Deploy อัตโนมัติไปยังระบบที่ต้องการแก้ไข ซึ่งระบบการ Build และ Deploy ตรงนี้เราพัฒนาขึ้นมาเอง เพื่อลดช่องว่างในการ Deploy เป็น Zero Downtime จริงๆ และ เพื่อความยืนหยุ่นของเงื่อนไขพิเศษ เช่น ลองทดสอบระบบใหม่ในกลุ่ม Beta ก่อน เมื่อไม่เจอปัญหาใดๆจะอัพเกรดเป็น Production อีกครั้งโดยอัตโนมัติ

นอกจากการทำ Code Review ที่จะช่วยเรื่องคุณภาพของ Code แล้ว เรายังนำ Business Metrics ที่สำคัญต่างๆมาเป็นส่วนช่วยชี้วัดคุณภาพ และความสำเร็จของสิ่งที่เราพัฒนาอีกด้วย ซึ่งตรงนี้ทำให้การแก้ปัญหาของ Engineer นั้นแก้ไขได้ตรงประเด็น และมีเป้าหมายอย่างชัดเจน

ยกทั้งทีมไปทำงานที่ Silicon Valley กัน 30วัน เพื่อหาประสบการณ์ และเข้าสัมนาเทคโนโลยีต่างๆ

เครื่องมือที่ทีมใช้

  • Github — ในการจัดการ Source Control / Pull-Request / Code Review
  • Google Apps สำหรับ Email และ งานเอกสารภายในและภายนอกต่างๆ
  • Hipchat — สื่อสารภายในองค์กร และ เชื่อมต่อกับระบบต่างๆเพื่อ Notification ให้กับ Team
  • Asana — ในการจัดการ Task งานต่างๆ และสื่อสารกันเกี่ยวกับของทีม
  • Mixpanel — ในการเก็บ Event เพื่อะวิเคราะห์พฤติกรรมผู้ใช้ และสถิติต่างๆ
  • Newrelic — ในการตรวจจับปัญหา และวัดผลคุณภาพ Application ที่เรา Deploy ต่างๆออกไป
  • Datadog — ในการเก็บ และแสดงผล Metrics จากระบบต่างๆ

ด้านสถาปัตยกรรม

ในช่วง 2 ปีแรก เราได้ใช้ Amazon Cloud และ PaaS อย่าง Heroku ซึ่งผลลัพธ์ด้านเสถียรภาพยังไม่เป็นที่พอใจ ระบบของเราทั้งหมดตอนนี้จึงอยู่ที่ Google Cloud Platform ทำงานบนระบบปฏิบัติการ CoreOS ใช้ Kubernetes ในการ Scheduling และจัดการ Cluster ทั้งหมด เราเชื่อใน Multi Cloud Provider เชื่อในความยืดหยุ่นต่อการขยายตัวในอนาคต ดังนั้นเราจึงไม่พัฒนาระบบให้ผูกติดกับ Service พิเศษเฉพาะกับ Cloud รายใดรายหนึ่ง

ด้าน Application เราใช้ภาษา JavaScript บน Node.js ในการพัฒนาเป็นหลัก เพราะต้องการให้ Engineer นั้นสามารถดูแล และพัฒนาได้อย่างรวดเร็วทั้งหน้าบ้านและหลังบ้านด้วยภาษาเดียว ในส่วนของ Performance ก็ทำงานได้ดีมาก สามารถรับโหลด และประมวลผลได้รวดเร็ว การออกแบบระบบเราเลือกใช้หลักการ Microservices ในการพัฒนาระบบต่างๆให้ง่ายต่อการดูแล และเชื่อมต่อกับระบบอื่นๆได้โดยง่าย ปัจจุบันเรามี 10 services และกำลังเพิ่มขึ้นเรื่อยๆ เราจึงพัฒนา Framework ขึ้นมาเป็นของเราเองชื่อว่า Spinal เพื่อเชื่อมต่อ Microservices ต่างๆเข้าด้วยกัน รวดเร็ว และง่ายต่อการพัฒนา

ด้านระบบฐานข้อมูล เราใช้ MongoDB ในการเก็บข้อมูลหลัก ด้วยเหตุผลด้านความเร็ว ความง่ายในการจัดการข้อมูล และดูแลรักษา ส่วนเรื่อง Cache และระบบ Queue เราเลือกใช้ Redis

ด้านส่วนติดต่อผู้ใช้ ปัจจุบันเรามี Web Application เป็น UI หลักและ UI เดียวในการแสดงผลข้อมูลทั้งหมดของ Jitta ซึ่งตรงนี้ทำให้เราอัพเดท Feature ได้อย่างรวดเร็ว และตัดปัญหาเรื่องการอัพเดทกับ App store ต่างๆ และ Fragment ของ Devices ออกไปได้ ทุกหน้านั้นเป็น Full Responsive รองรับ Desktop, Tablet และ Mobile เพื่อความเร็วในการพัฒนา และง่ายต่อการดูแล เราจึงพัฒนา Frontend Framework ขึ้นมาเอง เป็น Style Guide Driven ชื่อว่า JUI เพื่อทำให้ Engineer ไม่ต้องมากังวลในเรื่องของ Design และสามารถแสดงผลได้อย่างถูกต้องผ่าน Code จากหลังบ้าน ส่วน Designer เองก็ยังสามารถเข้าไปแก้ไขที่ JUI เพื่อควบคุมส่วนการแสดงผลต่างๆของเว็บได้ โดยไม่กระทบกับส่วนของ Engineer

โครงการ Open Source จาก Jitta

  • Spinal — Node.js Microservice Framework ที่ออกแบบขึ้นมาเพื่อการ Scale พัฒนาได้รวดเร็ว และง่ายต่อการดูแลระบบ
  • Jchart — ระบบกราฟเส้น ที่ใช้งานจริงบน Jitta ที่สามารถ Render กราฟได้ทั้งบน Browser และ Server Side
  • Jshot — ระบบ Capture Screenshot ที่รันบน Docker ทำให้ได้ผลลัพธ์เหมือนกัน 100% เสมอในทุกๆเครื่องที่รัน Test
  • Bunnycron — ระบบ Cron ที่ออกแบบไว้ให้รันบน Cluster มี lock mechanism เพื่อป้องกันการรันซ้อนกัน และทำให้เรา Save cron config ไว้บน Repository อีกด้วย
ภาพทีมงานของเรา 8 คน : Hunt (CTO) , Book (Engineer) , Awe (COO), Trawut (CEO), Benz (UI/UX Designer), Neng (Engineer), Khame, (Engineer) and Kao (Engineer)

ปัจจุบันและอนาคต

3ปี ที่ผ่านมา Jitta ได้พัฒนาไปไกลยิ่งขึ้น เราตื่นเต้นและสนุกที่ได้สร้างผลิตภัณฑ์ที่อยู่ในตลาดการเงิน ที่เป็นตลาดที่มีมูลค่าสูงที่สุดในโลก เรามีความสุขที่มีผู้ใช้รัก และช่วยเปลี่ยนแปลงชีวิตของพวกเขา เรามี Features ใหม่ๆ ที่ท้าทาย ที่จะเปลี่ยนแปลงประสบการณ์ลงทุนทุกๆ ครึ่งปี เราพัฒนา Intellectual Properties เช่น Jitta Score และ Jitta Line ที่เป็นของเราเองให้คนทั้งโลกได้ใช้ เราขยายไปตลาดใหม่ๆทุกๆปี และมี Partner มากมายในต่างประเทศ ด้วยเป้าหมายที่จะเปลี่ยนแปลงโลกของการลงทุน เรามีความท้าทายอีกมากที่รอพวกเราอยู่ ถ้าคุณชอบในสิ่งที่เราทำ และวิธีการทำงานของพวกเรา

อย่ารีรอที่จะมาเป็นส่วนหนึ่งกับพวกเรา Jitta ส่งอีเมลมาได้ที่ hr@jitta.com

--

--

Hunt
Jitta Engineering

I’m working at Jitta.com — Financial Platform for value investor. I love node.js and all kind of web technology!