ข่าวที่สร้างกระแสฮือฮาให้วงการธนาคารในรอบเดือนที่ผ่านมา คือการเปิดตัวแอพ SCB Easy เวอร์ชันใหม่ ที่มีจุดขายคือปรับหน้าตาโฉมใหม่ และการกดเงินจากตู้เอทีเอ็มแบบไม่ต้องใช้บัตร
แต่ในงานแถลงข่าวเปิดตัวแอพ SCB Easy ทางธนาคารไทยพาณิชย์ไม่ได้พูดแต่เรื่องตัวแอพอย่างเดียว เพราะพูดถึง "สถาปัตยกรรม" ฝั่งเซิร์ฟเวอร์ที่ทำงานอยู่เบื้องหลัง ระบบฝั่งเซิร์ฟเวอร์ตัวนี้ถูกเขียนขึ้นมาใหม่ทั้งหมด และใช้แนวทางแบบ microservices ที่กำลังได้รับความนิยมในบริษัทไอทีสมัยใหม่ (แนวทางนี้เอามาจาก Netflix)
ทาง Blognone จึงไม่พลาดโอกาสที่จะขอสัมภาษณ์ SCB ในเรื่องนี้ และเราได้คุยกับคุณธนา โพธิกำจร Head of Digital Banking ผู้ที่ขึ้นเวทีพรีเซนต์สถาปัตยกรรมนี้ในงานแถลงข่าวนั่นเอง
คุณธนา เริ่มจากเล่าว่าตัวสถาปัตยกรรมเบื้องหลังเว็บไซต์ SCB Easy ซึ่งเป็น internet banking รายแรกๆ ถูกพัฒนามาตั้งแต่ปี 2001-2002 โดยเริ่มจากการเป็น web frontend ที่เขียนด้วย ASP
ที่ผ่านมา 15 ปี ระบบตัวนี้ไม่เคยถูกเปลี่ยนแปลงใหญ่เลย มีแต่โมกันแล้วโมกันอีก (บวกด้วยอัพเกรดเป็น ASP.NET เท่านั้น) แถมตัวมันเองใช้โครงสร้างแบบ monolithic การแก้ไขอะไรก็ตามจึงเป็นเรื่องยากมาก
พอช่วงหลัง ธนาคารออนไลน์เริ่มได้รับความนิยมมากขึ้น ปริมาณทราฟฟิกคนเข้าเว็บก็เยอะขึ้น โดยเฉพาะช่วงสิ้นเดือน ระบบเริ่มรองรับไม่ไหวและมี downtime บ่อยขึ้นเรื่อยๆ ทุกคนในทีมก็มองว่าการจูนระบบเดิมให้รองรับปริมาณทราฟฟิกใหม่ เริ่มเป็นไปไม่ได้แล้ว จึงมองถึงการเขียนใหม่
การเขียนใหม่ก็เริ่มขึ้นตั้งแต่ปลายปีที่แล้วนี้เอง มาถึงตอนนี้ใช้เวลาเพียง 10 เดือนเท่านั้น เรียกว่าเป็นภารกิจที่ท้าทายมาก ในการสร้างระบบ backend ขึ้นมาใหม่ทั้งหมด ในระยะเวลาที่สั้นขนาดนี้
โจทย์ของการออกแบบ SCB Easy Platform ไม่มีอะไรสำคัญไปกว่า "ความเรียบง่าย" ทีมงานต้องการให้มันสะอาดที่สุดเท่าที่เป็นไปได้ ส่วนปรัชญาข้ออื่นที่นำมาใช้ก็คือ "microservices" ที่แยกบริการย่อยๆ ออกจากกัน เพื่อให้แก้ไขได้เฉพาะส่วนโดยไม่กระทบส่วนอื่น และรองรับการขยายตัวของทราฟฟิกการใช้งานในอนาคต
ต้นแบบของ SCB Easy Platform มาจากสถาปัตยกรรมของ Netflix ที่เปิดซอร์สต่อสาธารณะ ซึ่งหลายองค์กรก็นำแนวทางของ Netflix มาใช้เช่นกัน
คุณธนา บอกว่าเนื่องจากเป็นการออกแบบสถาปัตยกรรมใหม่หมด และมีต้นแบบที่ใช้งานได้ดีอยู่แล้ว จึงพยายามยึดแนวทางให้สถาปัตยกรรม "สวย" ที่สุดเอาไว้ตั้งแต่แรก
ฝั่งของ frontend ใช้เทคโนโลยี Experience API ของบริษัท Backbase ที่ธนาคารทั่วโลกใช้กันสำหรับเป็น Frontend Content Management ส่วนตัวไคลเอนต์ก็เขียนขึ้นเอง มีทั้งเว็บและแอพ
บทเรียนของ SCB ในการสร้างแอพ SCB Easy คือต้องหาความสมดุลระหว่างการเขียนแอพแบบเนทีฟ และการใช้ webview เข้าช่วย จากประสบการณ์คือเนทีฟดีกว่าเว็บมาก เพราะการทำเว็บให้เนียนสวยเท่าเนทีฟเป็นเรื่องยากกว่ามาก แต่การใช้เนทีฟก็มีข้อเสียคือทำให้แอพมีขนาดบวมขึ้นเรื่อยๆ ถ้าเรายัดทุกอย่างลงไป ดังนั้นอะไรที่ใช้ไม่บ่อยนัก นานๆ ใช้ที สร้างเป็นเว็บดีกว่า
เรื่อง UI ของแอพที่มีทั้งคนชอบและไม่ชอบ เรื่องนี้แยกเป็น 2 แนวทางตั้งแต่ช่วงการออกแบบแล้ว คนที่ใช้ฟีเจอร์ทำธุรกรรมบ่อยๆ จะรู้สึกว่ารกไปหน่อย ทีม UX เองก็อยากให้ลูกค้าทำคำสั่งในแอพให้เสร็จเร็วๆ แต่ก็สวนทางกับยุทธศาสตร์ของธนาคารที่อยากเป็นมากกว่าธนาคาร คำถามในเชิงการออกแบบคือจะหาจุดสมดุลอย่างไร
เสียงตอบรับหลังแอพออกไปแล้วคือกลุ่ม power user บ่นว่าใช้งานยากขึ้น แต่ที่ผิดคาดคือกลุ่มลูกค้าทั่วไปกลับชอบ เพราะเกิดความสนใจ เข้าไปดูได้มากขึ้นว่าแอพของธนาคารทำอะไรได้เยอะกว่าที่คิดมากด้วย
แพลตฟอร์มตัวนี้มี API Gateway เพื่อให้ระบบ backend สามารถสื่อสารกับ frontend ใดๆ ก็ได้ รวมถึงการเชื่อมต่อจากพาร์ทเนอร์ หรือสตาร์ตอัพสายฟินเทค เข้ามาเรียกใช้ API ได้ด้วย
SCB ให้ความสำคัญกับการเปิด API มาก สังเกตได้จากแอพ SCB Easy ตัวใหม่ใช้การออกแบบแนว tile ที่มีไอคอนเพิ่มขึ้นได้เรื่อยๆ เพื่อเปิดให้พาร์ทเนอร์สามารถเข้ามานำเสนอบริการของตัวเองต่อลูกค้าของ SCB Easy จำนวน 4-5 ล้านคนได้จากตัวแอพเลย
ตอนนี้ frontend ของ SCB เองก็จะเรียกข้อมูลต่างๆ ในฝั่ง backend ผ่าน public API กันอย่างเสมอภาค ทัดเทียมกับแอพภายนอกที่มาเชื่อมต่อ ไม่มีท่าพิเศษให้กับแอพของ SCB โดยเฉพาะ เพื่อสร้างฐานตัว API ให้มั่นคงสำหรับอนาคตเมื่อเปิดการเชื่อมต่อให้คนนอก
ฝั่งของตัวระบบหลัก ที่ออกแบบเป็น microservices ตามแนวทางสมัยใหม่ ก็มีโจทย์ว่าทำอย่างไรจะรองรับการขยายตัวแบบ hyperscale ในอนาคตได้
ตรงนี้ทีม SCB ใช้โซลูชันของ Netflix สองตัวคือ Edge Service ที่เอาไว้กระจายงาน (ใช้ Zuul) ส่วนการจัดการโครงสร้างพื้นฐานใช้ Eureka สำหรับ provisioning และ load balancing
บทเรียนของ SCB พบว่าการออกแบบ microservice ดูแลง่ายจริง แต่กินทรัพยากรเยอะ ดังนั้นจะต้องเตรียมจำนวนเครื่องไว้ให้ดี โครงสร้างพื้นฐานทั้งหมด SCB ดูแลโฮสต์เอง ไม่ได้อยู่บนคลาวด์ โดยใช้คลาวด์เฉพาะงานส่วน dev/testing environment เท่านั้น
ส่วนงานอื่นๆ อย่างการทำ logging ใช้ Elasticsearch และการมอนิเตอร์การใช้งานใช้ Firebase ของกูเกิล โดยระวังเรื่องการไม่ส่งข้อมูลที่ระบุตัวลูกค้าออกไปยังกูเกิล เพราะระวังเรื่องการกำกับดูแลจากธนาคารแห่งประเทศไทย
อีกส่วนที่ SCB ให้ความสำคัญคือการวิเคราะห์ข้อมูล เรื่องนี้เป็นนโยบายที่มาจากซีอีโอโดยตรง ว่าอยากให้ธนาคารมีวัฒนธรรมที่ตัดสินใจบนพื้นฐานของข้อมูล (data-driven culture) ปัญหาในเชิงเทคนิคคือธนาคารมีระบบไอทีหลากหลาย ข้อมูลเก็บอยู่คนละที่
ทางออกจึงเป็นแนวคิด data lake คือเทข้อมูลทั้งหมดมาเก็บรวมกันตรงกลาง โซลูชันที่ใช้ก็เป็น Hadoop ตามมาตรฐานของวงการ (ใช้ของ Cloudera) จากนั้นก็ใส่ตัววิเคราะห์ข้อมูลเข้ามาอีกหลายตัว เช่น Splunk
ส่วนเป้าหมายของการวิเคราะห์ข้อมูล อย่างในแอพ SCB Easy ควรจะวิเคราะห์และพยากรณ์ได้ว่า ลูกค้าจะอยากทำอะไรเป็นลำดับต่อไป เราควรนำเสนอให้ลูกค้าได้เลย ไม่ใช่ว่าให้ลูกค้าต้องมานั่งหาเอง ตอนนี้ก็เริ่มทดสอบฟีเจอร์นี้เป็นการภายในบ้างแล้ว
นอกจากเรื่องสถาปัตยกรรมแล้ว การทำงานของคนในทีมก็สำคัญไม่แพ้กัน ตอนแรกทาง SCB อยากทำ agile เหมือนคนอื่นๆ แต่พบว่าโครงการนี้ใหญ่มาก เพราะต้องเขียนระบบใหม่หมด ในเวลาที่สั้นมากคือ 10 เดือน การเปลี่ยนวิธีทำงานพร้อมกับเปลี่ยนสถาปัตยกรรมครั้งใหญ่ คงต้องเลือกอย่างใดอย่างหนึ่ง
ช่วงแรกๆ ของโครงการก็นำ agile เข้ามาใช้งาน ทีมงานก็เครียดกันมาก เพราะต้องเปลี่ยนวิธีทำงาน พร้อมกับโจทย์ว่าต้องทำให้เร็ว ผลคือมีแต่คนอยากจะออกจากโครงการ มีคนร้องไห้ มีคนลาออก ทางทีมบริหารจึงต้องยอมถอยกันมาสักหน่อย โดยนำหลักการหรือวิธีการบางอย่างของ agile มาใช้งาน แต่ไม่ใช้ทั้งหมด
SCB เลือกใช้บริษัทภายนอกหลายรายเข้ามาช่วยพัฒนา แต่แนวทางการจ้างงานแบบเก่าที่จ้างเป็นโครงการใหญ่ๆ ตาม requirement ก็ใช้ไม่ได้แล้วอีกเหมือนกัน เพราะโครงการซอฟต์แวร์ยุคใหม่ requirement เปลี่ยนแปลงตลอดเวลา ต้องปรับตัวกันเร็วมาก ก็ต้องเปลี่ยนวิธีการจ้างมาเป็นแบบตามวันทำงาน (man-day) แทน
คุณธนา เล่าว่าปัจจุบันธนาคารเปลี่ยนมุมมองต่อไอทีไปมาก จุดเปลี่ยนสำคัญคือผู้บริหารระดับสูงต้องเข้าใจความต้องการของฝ่ายไอทีด้วย ที่ผ่านมา ธนาคารทำแต่โครงการเล็กๆ ที่ไม่ได้เปลี่ยนแปลงแกนหลักขององค์กร คนอื่นที่อยู่นอกฝ่ายไอทีจึงไม่เห็นผลกระทบมากนัก การลองทำอะไรใหม่ๆ เล็กๆ ไปเรื่อยๆ มันจึงไม่ได้เปลี่ยนแปลงอะไร
รอบนี้เป็นการทำโครงการใหญ่มาก มันเกิดผลกระทบสูงมากที่คนมองเห็นและจับต้องได้ ทีมงานเองก็จำเป็นต้องปรับตัว หาคนรุ่นใหม่ๆ เข้ามาเสริมกับทีมงานเดิมๆ เพื่อให้เห็นการเปลี่ยนแปลง
บทเรียนของทีม SCB Digital มีด้วยกัน 3 ข้อคือ
ส่วนคนไอทีแบบไหนที่ SCB ต้องการ ก็เป็นคนที่พร้อมเปิดใจรับเทคโนโลยีใหม่ๆ เพราะ SCB มีฐานเทคโนโลยีใหม่ๆ ให้ลองเล่นเยอะมาก บวกกับมีลูกค้าขนาดใหญ่ระดับหลายสิบล้านคน ซึ่งมีองค์กรไม่กี่แห่งในไทยที่มีลูกค้าระดับนี้ ดังนั้นการเข้ามาใช้เทคโนโลยีใหม่ๆ รองรับลูกค้าจำนวนมากขนาดนี้ จึงเป็นปัจจัยที่ดึงดูดคนเข้ามาได้ เพราะมันท้าทายนั่นเอง
Comments
ไม่ใช้ => ไม่ใช่
ไ่ใช้ ?
ตอนเปิด app น่าจะเอาการตรวจลายนิ้วมือมาร่วมด้วยนะครับ
มีแล้วนี่ครับ
@TonsTweetings
ผมใช้ใน Android ไม่มีนะครับ
ผมก็ใช้ แอนดรอยด์ มีนะครับ
ถามหน่อยครับ
1. api gateway เขียนด้วยภาษาอะไรครับ
2. 2,000 tps มันเพียงพอกับคนใช้งานทั้งประเทศเหรอครับ
API เขาตามโครสร้างเป็น Restful นิครับ ภาษาอะไรก็มาต่อได้
อันนี้มีถามในตอนสัมภาษณ์แต่ผมไม่ได้เอาลงครับ คำตอบคือ 2,000 tps นี่เป็นแค่ตัวเลขในปัจจุบัน ส่วนการออกแบบไม่คิดจะมี upper limit และในระยะยาวตั้งเป้าว่าจะให้บริการลูกค้าได้ระดับหลายสิบล้านคนครับ
ในภาพ api gateway เป็นของ Layer 7 นะครับ
10 เดือน !! ฆ่า dev ไปกี่คนครับนั่น
อ่านช่วง agile สุดท้ายแล้วนึกถึงตัวเอง(ตาเป็นแพนด้า+เสียอารมณ์) เพราะงาน system/business core ต้องทำแบบ step-by-step เอาให้แน่ให้ชัวร์ เสร็จแล้วส่วนที่เหลือจะเชื่อมต่ออะไรก็เรื่องของคุณเลย
แต่ในทางปฏิบัติจริงก็อย่างว่าครับ เหมือนถอดประกอบเลโก้ไล่ตั้งแต่ฐาน ลูกค้าก็เอือม คนเขียนก็ท้อ
ระยะเวลาสั้นขนาดนี้ สงสารก็แต่ dev ละครับ
10 เดือนเอง ยอมรับว่าเจ๋งจริงไม่งั้นดันไม่ออกแน่นอน แถมใช้แต่ของเจ๋งๆอีกและไม่ใช้ cloud อีก
10 เดือนเห็นทีมเดปเป็นกรรมกรหรือจ้างทีมเท่าไมโครซอฟท์นะ...?
8200 midnight meals สื่อถึงที่ถามได้นะผมว่า
ทีมขนาด 367 คน ผมว่าถ้านานกว่านี้ ฝ่ายการเงินก็คงไม่ยอมแล้วนะครับ แต่ที่น่าคิดการคุมทีมขนาดนี้ โดยไม่มีปัญหาเรื่องการส่งต่องานระหว่างทีม แสดงว่าหัวหน้าทีมต้องเข้าขา หรือทำงานกันมานาน (ทีม 367 คนผมว่าน่าจะรวมทุกตำแหน่ง รวมถึง Outsource ด้วย โปรแกรมเมอร์ส่วนใหญ่น่าจะอยู่ที่ Outsource)
ปัญหาใหญ่ตอนนี้คือเปิด app นี้ไม่ได้
เปิดที่ไรก็ขึ้นว่าเชื่อมต่อไม่สำเร็จ
เดิมทีเป็น .net ตอนนี้เปลี่ยนเป็น java ถ้าดูจากภาพ สุดท้ายไม่พ้น java จริงๆ
Java อาจจะเป็นของแอป Android ก็ได้ครับ
SPICYDOG's Blog
ในภาพมี Spring Boot ครับ น่าจะเอามาทำ Micro Service
ทำไมผมไม่ชอบ UX UI แบบใหม่เลย
จากบทความ คำตอบของคำถามคุณคือ "คุณเป็น Power User"
ผมว่าใช้ง่ายดีนะ และแบบ tile มันดูสะดวกเข้าใจดี
มือใหม่!! ใหม่จริงๆนะ
+1 ไม่ชอบเหมือนกัน ของเก่า friendly กว่ามาก
ไม่ชอบด้วยครับ อย่างน้อยน่าจะให้ customise ได้ เพราะที่เอามาไว้หน้าแรกผมไม่ได้ใช้เลย
Blognone น่าจะตั้งโพลได้นะ จะได้รู้ว่า คนชอบหรือไม่ชอบ
ชอบรายงานแบบนี้ครับ
ชอบข่าวแนวนี้ของ Blognone คือเป็นข่าวที่หาไม่ได้จากที่อื่น และในมุมมองที่ต่างออกไป
ชอบ App ไทยพาณิชย์ตัวใหม่ เพราะตัวเก่าใช้งานยาก ซับซ้อน ตัวใหม่ ชัดเจน ง่าย ตรงตัว
อยากให้ปรับหน้าเว็บด้วยครับ ปัจจุบัน ชวนงงมาก ใส่อะไรเข้าไปเยอะแยะและสื่อสารได้ไม่ดี จนงง
ชืนชมคนทำ เวลาแค่ 10 เดือน กับ app ธนาคาร เขียนใหม่หมดทั้งหน้าบ้านหลังบ้าน
เยี่ยมครับ
ในฐานะผู้ใช้ประจำ ตอนแรกที่เห็นนี่ถึงกับสบถว่า "ใส่xxxอะไรมามากมายนี่"(ของจริงคงพิมพ์ไม่ได้ในนี้) แต่พอใช้ๆ ไปเหมือนว่ารู้ตำแหน่งที่ต้องใช้แล้วที่เหลือมองไม่เห็นไปเลยอารมณ์ประมาณหน้าชัดหลังเบลอ และชอบ UI UX ครับ เหมือนเดาใจได้ว่าต้องต่อไปตรงไหนแล้วมันมีโผล่มาให้ใช้เลยที่หน้านั้น
ปกติใช้ SCB Easy ประจำอยู่แล้ว ตอนใช้ใหม่ๆก็ไม่ชิน แต่ใช้ๆไปรู้สึกมันเจ๋งมาก แถมยังมีจุดที่พัฒนาได้อีกเยอะเลย
ส่วนตัวคิดว่าทีม SCB Digital โหดมาก โดยเฉพาะภาพประกอบรูปสุดท้ายค่ะ ตบมือให้เลย
ปล.ชอบข่าวสไตล์นี้มากค่ะ ขอบคุณสำหรับข่าวค่ะ
คุณ ธนา เก่งแหะ โดด มาจับมาทำเรื่องนี้ จาก ไม่รู้เรื่องอะไรเลย ทำโครงการใหญ่ขนาดนี้
เห็นมีคนบ่น ๆ ถึงข่าวนี้อยู่พอสมควร (ข้อแรกก็ "10 เดือน" นั่นล่ะครับ) มีคนตั้งข้อสังเกตไว้หลายอย่าง
ผมไม่ชอบที่ทำให้ลำบากเกินไปในการ login ที่แยกมากจาก scbeasy สำหรับคนไม่มีบัตร และไม่สะดวกไปที่ธนาคารในการเปลี่ยนเครื่องไปมา
ชอบบทความนี้มากครับ อ่านมันส์ อ่านเพลิน อ่านสนุก ได้ความรู้
+1
my blog :: sthepakul blog
บทเรียนของทีม SCB Digital มีด้วยกัน 3 ข้อคือ
- ต้องให้ผู้ใหญ่เข้าใจก่อน ซึ่งตอนนี้ไม่ใช่เรื่องยากแล้ว เพราะผู้บริหารทุกองค์กรรู้แล้วว่าต้องลงทุนด้านไอที
- ให้ทำโครงการใหญ่ๆ ที่เห็นผลกระทบสูงเลย
- เอาคนใหม่เข้ามาเยอะๆ สร้างเลือดใหม่ที่มีวิธีคิดแบบใหม่ อย่าพยายามเปลี่ยนองค์กรด้วยการเปลี่ยนคนชุดเดิม ต้องหาคนใหม่เข้ามาเสริมทีมด้วย
ชอบมากครับ ถ้าหัวเรือ project ไม่เก่งจริงทำไม่ได้แน่นอน
รู้สึก UI เหมือน Windows Phone