Custom SoftwareOTTPlatformMobile AppArchitecture

Super App Skeleton: เบื้องหลังโครงสร้างที่ขับเคลื่อน TrueID 20M+ Users และ 20+ Business Units

เมื่อ Muze เข้าไปออกแบบ App Infrastructure ให้ TrueID ที่ต้องรองรับ 20M+ MAU และ 20+ Business Units บน codebase เดียว — บทเรียนเรื่อง App Skeleton, JSON-Driven UI, Adapter Pattern และทำไม Discovery ถึงสำคัญกว่าการรีบเขียน Code

Inside TrueID Super App Architecture — One App. Every Experience. Built for Scale. 20M+ Users, 20+ Business Units, Shared Codebase, Super App Skeleton

การสร้าง Super App ไม่ได้ยากเพราะต้องมีฟีเจอร์จำนวนมาก

แต่ยากกว่า เพราะฟีเจอร์เหล่านั้นมาจากคนละทีม มีเป้าหมายธุรกิจต่างกัน มีจังหวะ release ต่างกัน และบางทีทำงานอยู่บนอุปกรณ์หลายรุ่นพร้อมกัน

เมื่อ Muze เข้าไปทำงานกับ TrueID ซึ่งต้องรองรับ 20M+ Monthly Active Users และมี Business Unit มากกว่า 20 ทีม บน ecosystem เดียวกัน โจทย์จริงๆ จึงไม่ใช่ “ทำฟีเจอร์ให้ครบ” แต่คือ “ออกแบบโครงสร้างให้ทุกทีมโตได้โดยไม่ทำระบบพัง”


Scale ที่ทำให้การตัดสินใจเปลี่ยนไปโดยสิ้นเชิง

DimensionScale / Challenge
User Scale20M+ Monthly Active Users
Business Units20+ BU บน ecosystem เดียวกัน
Platform CoverageMobile App + Android TV Launcher (Gen 1–3)
Region SupportMulti-Region ด้วย Feature Toggle
High ConcurrencyLive event ระดับ 1M+ concurrent viewers (เช่น World Cup)
Content OperationCMS-driven Shelf & JSON-based Layout
IntegrationNetflix entitlement, TMN Payment, TikTok Beans, True membership

ตัวเลขเหล่านี้ไม่ใช่แค่ achievement ที่น่าประทับใจ แต่มันเปลี่ยน decision ทุกอย่าง ตั้งแต่ architecture ไปจนถึงวิธีที่ Muze เลือก approach ในแต่ละปัญหา


ปัญหาจริงคือ “20 ทีมอยู่ในบ้านหลังเดียวกัน”

ก่อนจะเริ่มเขียน code บรรทัดแรก สิ่งที่ต้องทำความเข้าใจคือ TrueID ไม่ใช่แอปธรรมดา มันคือ digital platform ที่ต้องรองรับ Streaming, Music, Games, News และ True Services ภายใต้ branding เดียว

แต่ละ BU อยากเปิด campaign ของตัวเอง อยากปรับ content ให้เหมาะกับ region ของตัวเอง และอยาก move ได้เร็วตาม business priority ของตัวเอง ในขณะที่ผู้ใช้ต้องรู้สึกว่าแอปนี้ลื่นไหลและเป็นหนึ่งเดียว

ถ้าปล่อยให้แต่ละ BU จัดการ code ของตัวเองโดยไม่มีโครงสร้างกลาง ผลคือ monolithic app ที่ยิ่งโตยิ่งคุมไม่ได้ — เพิ่มฟีเจอร์ใหม่ทีไรเสี่ยงกระทบทั้งระบบทุกที

นี่คือ core problem ที่ Muze ต้องแก้


Skeleton-First: Muze ไม่ได้เริ่มจากฟีเจอร์

Skeleton-First Design — Build once. Scale infinitely. 4-layer architecture: Experience Layer, Business Layer, Platform Layer, Infrastructure Layer

แนวทางของ Muze คือการเริ่มจาก App Skeleton ก่อน แทนที่จะถามว่า “แต่ละ BU ต้องการฟีเจอร์อะไร” เราถามก่อนว่า

“แอปนี้ควรมีโครงสร้างกลางแบบไหน เพื่อให้ BU ต่างๆ เสียบ feature ของตัวเองเข้ามาได้ โดยไม่ทำให้ codebase แตกกระจาย?”

Skeleton ในที่นี้ครอบคลุม navigation structure, shelf engine, CMS integration, authentication layer, feature toggle, payment integration, entitlement logic, design system และ module boundary ระหว่าง service

เมื่อ Skeleton แข็งแรง การเพิ่ม BU ใหม่จะไม่ใช่การต่อเติมแบบเฉพาะกิจ แต่เป็นการเสียบ module เข้าโครงสร้างที่รองรับไว้แล้ว


3 Technical Decisions ที่ Muze เลือกและทำไม

1. 32-bit APK เพื่อรองรับทุก Hardware Generation

TrueID TV Box มี 3 generations ที่ capability ต่างกันมาก ตั้งแต่กล่อง Gen 1 ที่ spec จำกัด ไปจนถึง Gen 3 ที่มี AI และ Camera

ทางเลือกหนึ่งคือสร้าง APK แยกตามรุ่น ซึ่งฟังดูง่ายแต่หมายถึง maintenance cost ที่ซ้ำซ้อนตลอดชีวิตของโปรเจกต์

Muze เลือก build เป็น 32-bit APK เดียว ที่รองรับได้ทุก generation เหตุผลหลักคือ codebase เดียว = test path เดียว = deployment เดียว และลดความเสี่ยงที่ feature จะทำงานต่างกันบน device ต่างรุ่น

trade-off คือต้องออกแบบ performance layer ให้ทำงานดีบนทั้ง spec ต่ำและ spec สูง ซึ่งทำได้ด้วย feature detection และ adaptive rendering แทนการ hardcode ตาม device version

2. JSON-Driven UI + Firebase Remote Config แทนการรอ App Release

CMS-driven Shelf Engine & JSON-driven UI — Content teams can iterate, test, and personalize in real time without a full app release

โจทย์ที่ยากของ Super App คือทีม business ต้องการเปลี่ยน layout, เปิด campaign, หรือปรับ content ให้เหมาะกับ region ได้เร็ว — โดยไม่ต้องรอ cycle การ submit app ไป store

Muze ออกแบบ Home Page ให้ใช้ JSON Skeleton Structure เป็นตัวกำหนด layout ซึ่งอ่านจาก backend ตอน runtime แทนที่จะ hardcode อยู่ใน app ควบคู่กับ Firebase Remote Config สำหรับควบคุม feature availability ตาม hardware generation และ region

ผลคือทีม business สามารถเปลี่ยน shelf, hero, grid, หรือเปิด/ปิด feature ได้จาก CMS โดยไม่ต้อง trigger app release ทุกครั้ง

สิ่งที่ต้องระวังคือ JSON-Driven UI มีความเสี่ยงด้าน consistency ถ้าไม่มี guardrail ดีพอ — Muze จึงออกแบบ schema validation ที่ CMS level เพื่อป้องกันไม่ให้ layout ที่ invalid ไปถึง production

3. Adapter Pattern สำหรับ Auth และ Payment หลายเจ้า

TrueID ต้องเชื่อมกับ payment provider หลายราย เช่น True Money (TMN) และ TikTok Beans รวมถึง entitlement system ของ Netflix และระบบสมาชิกของ True เอง

แต่ละ provider มี flow ไม่เหมือนกัน มี token format ต่างกัน และมี error handling ที่แตกต่างกัน ถ้าเอา provider-specific logic เข้าไปผูกกับ core app ตรงๆ ทุกครั้งที่เพิ่ม partner ใหม่หรือเปลี่ยน provider จะกระทบ codebase กลาง

Muze ออกแบบ Abstract Interface สำหรับ Auth และ Payment ที่ core app รู้แค่ว่า “ต้องการ authenticate” หรือ “ต้องการ process payment” โดยไม่รู้รายละเอียดของ provider แต่ละเจ้า — implementation แยกออกไปเป็น adapter ของแต่ละ provider

ผลคือการเพิ่ม payment method ใหม่ทำได้โดยเขียน adapter ใหม่ โดยไม่แตะ core logic เลย


Android TV: ความยากที่ไม่ได้คาดไว้ตั้งแต่แรก

Android TV Launcher Focus Management — Hero, Rail, Grid focus navigation เทียบ Mobile UX vs TV UX ด้วย Remote Control

หลายคนคิดว่า TV app คือ mobile app ที่ขยายหน้าจอให้ใหญ่ขึ้น ในความเป็นจริง challenge ต่างกันโดยสิ้นเชิง

บน mobile ผู้ใช้แตะสิ่งที่ต้องการโดยตรง แต่บน TV ผู้ใช้ต้อง navigate ด้วย remote control — ทุก press ขึ้น ลง ซ้าย ขวา ต้องรู้สึกเป็นธรรมชาติ

ปัญหาที่พบจริงในโปรเจกต์นี้คือ Home Shelf ที่มี content หลายประเภท (hero, rail, grid, recommendation) เมื่อ focus เคลื่อนที่ระหว่าง shelf ที่มี layout ต่างกัน cursor มักกระโดดไปผิดตำแหน่ง ทำให้ผู้ใช้รู้สึกว่าแอปตอบสนองไม่ได้เรื่อง

นอกจากนี้ TrueID TV ยังต้องทำงานในระดับ System Launcher ของ Android — ต่างจาก regular app ตรงที่ต้องจัดการ Boot sequence, Splash Screen และการเชื่อมต่อ Hardware ผ่าน AIDL เพิ่มเติม สิ่งเหล่านี้คือ complexity ที่ discovery phase ต้องหาให้เจอก่อน ไม่ใช่ปัญหาที่รอให้เจอตอน development


Discovery-First: ทำไมถึงไม่เริ่มเขียน Code ทันที

Discovery-First Modernization & Scale Readiness — Audit → Discovery → Migration → Scale จาก Legacy Complexity สู่ TrueID Super App at Scale

ก่อนเริ่ม modernize TrueID TV Launcher Muze ทำ Audit Legacy Codebase อย่างละเอียดทีละ module เพื่อหาว่าอะไรควร reuse อะไรควร replace และอะไรคือ dependency ที่กระทบมากที่สุด

เหตุผลที่ต้องทำ discovery ก่อน: ระบบที่มีผู้ใช้งาน 20M+ MAU ไม่มีพื้นที่สำหรับการ “ลองแล้วค่อยแก้” เหมือน startup — ถ้า migration กระทบ experience กลางอากาศ ผลกระทบวัดเป็นล้านคน

Discovery ที่ดีในกรณีนี้ต้องลงลึกถึง hardware constraint ของแต่ละ device generation, integration point กับ partner ต่างๆ, content delivery path, และ entitlement logic ที่ซ่อนอยู่ในระบบเดิม

บทเรียนที่ชัดที่สุดจากโปรเจกต์นี้คือ ยิ่งระบบใหญ่ ยิ่งไม่ควรรีบเขียน code เพราะ discovery ที่ดีคือ risk mitigation ที่ถูกที่สุด


Lesson Learned: Skeleton ไม่ใช่ Overhead — มันคือ Speed

หลายองค์กรมองว่าการลงทุนใน infrastructure ก่อนทำฟีเจอร์คือการเสียเวลา แต่จากโปรเจกต์ TrueID สิ่งที่เห็นชัดคือ BU ที่ 21, 22, 23 เพิ่มเข้ามาได้รวดเร็วกว่ามาก เพราะโครงสร้างรองรับแล้ว

เทียบกับถ้าไม่มี Skeleton — ทุก BU ใหม่จะต้อง negotiate กับ codebase เดิม และทุก feature ใหม่จะเพิ่ม complexity โดยไม่มีขอบเขต

สำหรับองค์กรที่กำลังสร้าง digital platform: ถ้ามีแผนจะโตเกิน 5 BU ให้ถามตัวเองก่อนว่า architecture วันนี้รองรับการโตนั้นได้ไหม — คำตอบจะบอกว่าควรเริ่ม Skeleton ตั้งแต่เมื่อไหร่

Super App ที่ดีไม่ได้เริ่มจากการมีฟีเจอร์มากที่สุด แต่เริ่มจากการมีโครงสร้างที่ดีพอให้หลายทีม หลายบริการ และหลายโอกาสทางธุรกิจ เติบโตอยู่บนระบบเดียวกันได้อย่างมั่นคง

Key Takeaways

  • Super App = Infrastructure ไม่ใช่ Feature List — โครงสร้างภายในตัดสินว่า platform จะโตได้แค่ไหน
  • 32-bit APK เดียวดีกว่า APK หลายตัว — เมื่อ target device หลาย generation ให้เลือก backward-compatible build เหนือ optimization แยก version
  • JSON-Driven UI + Remote Config = business agility โดยไม่ต้อง release cycle ทุกครั้ง
  • Adapter Pattern ทำให้การเพิ่ม payment/auth provider ใหม่ไม่กระทบ core
  • Android TV ≠ Mobile บนจอใหญ่ — Focus Management และ System Launcher integration คือ engineering domain ที่ต่างกันโดยสิ้นเชิง
  • Discovery ก่อน Code — สำหรับระบบที่มี user จำนวนมาก การ audit ก่อน migrate ถูกกว่าการแก้ปัญหาหลัง go-live เสมอ

ดู case studies อื่นของ Muze →

คุยกับทีม Muze →


จากประสบการณ์ Muze ในการออกแบบและ modernize TrueID Super App และ Android TV Launcher 2026

Super App Skeleton: เบื้องหลังโครงสร้างที่ขับเคลื่อน TrueID 20M+ Users และ 20+ Business Units

เขียนโดย

Peeranat Thoonsaengngam
Peeranat Thoonsaengngam Co-Founder & CEO, Muze Innovation
Case Study ที่เกี่ยวข้อง TrueID →