Available for Strategic Partnerships

Natthawat
Sawatdee

Group VP of Technology

Southeast Asia
Head of technology

Acting Managing Director at 2Read and Group VP of Technology at 2morrow Group. Experienced in leading technology strategy across startups and enterprises, with a background in system design, cloud infrastructure, and AI. Passionate about building scalable platforms and turning challenges into opportunities across Southeast Asia.

3+
Years Experience
4
Countries
10+
Projects

Connected with

Bitkubstock2morrowDTC GroupJIB AIHuawei cloudVantage
Natthawat Sawatdee
Group VP
Technology

Portfolio Companies

Strategic technology leadership across diverse sectors

Melearn

Melearn

EdTech

Bullmoon

Bullmoon

NFT/Web3

Bullmoon Jr

Bullmoon Jr

EdTech NFT

Stock2morrow

Stock2morrow

FinTech

2Read

2Read

Digital Publishing

2morrow Group

2morrow Group

Holding

TUBC

TUBC

Blockchain

Technology Stack

Trusted technologies for product growth, reliability, and rapid innovation.

Frontend
Modern frameworks for scalable, maintainable product experiences.
React
Next.js
Vue.js
TypeScript
JavaScript
Backend & Database
High-performance services, APIs, and distributed data architecture.
Node.js
Go
Python
PostgreSQL
MongoDB
Redis
DevOps & Cloud
Enterprise-grade deployment, CI/CD, and cloud infrastructure.
Docker
Kubernetes
GitLab CI/CD
AWS
Google Cloud
15+
Years of Excellence
50+
Strategic Initiatives
4
Market Regions

The Day Everything Broke

Scroll to follow the chaos unfold

The Day Everything Broke

A true story of a startup’s worst nightmare: No IT, no docs, no clue—and then the entire business went offline.

Scroll to follow the chaos unfold

Blind Organization: The Meltdown Begins

Q1, Year XXXX

No IT. No Docs. No Idea.

New year, total disaster. On January 1st, a promising Thai startup woke up to find its entire digital presence—website and app—dead. Not a single user could log in. The real punchline? There wasn’t a single IT person left in the company. Six months before, their IT manager quit. The core system had been built by an outsource team a year prior, with zero documentation, no ToR, no high-level diagrams, nothing. The downsizing wiped out any tech knowledge, any credentials, and any hope of a smooth recovery. When the outage hit, the management didn’t even know what language their backend used, what cloud provider hosted them, or where the code was. The startup was officially blind, lost in their own tech stack. Calls went out to software houses and every freelance dev they knew. Nobody wanted to touch it. Too risky, too messy, no information. Days passed. Customers left. Business froze. Hope faded. Nine days later, I—an independent software engineer—walked in, handed only a company laptop and the phone number of the CEO. No passwords, no system map, not even a clue. All I had was browser DevTools, Burp Suite, and a vague sense of curiosity. Time to start the digital autopsy...

Investigation Steps
  • IT manager quit 6 months before the crisis.
  • System built by outsource. No ToR. No docs. No architecture diagrams.
  • No one in the company knew what tech or cloud was in use.
  • January 1: Both website and app went offline. Zero access.
  • All rescue attempts failed. No team dared to help.
  • Nine days of total business freeze before anyone could even start troubleshooting.

The Digital Autopsy Begins

Day 9 - Entry Point

Hunting for a Pulse in a Dead System

With no credentials, no handover, and no map, the only way forward was digital forensics. I started by firing up F12 DevTools and Burp Suite, tracking network requests from the frontend just to figure out where the system was deployed. Piece by piece, scraping whatever IPs, endpoints, or cloud hints I could find, I began to reconstruct what the company no longer remembered about itself. The game was simple: guess, probe, document—repeat. Failure wasn’t an option. The clock was ticking, and the startup’s survival depended on brute-force curiosity and pure stubbornness.

Investigation Steps
  • Started from scratch—no passwords, no accounts, no system diagram.
  • Used browser DevTools to scan for active endpoints.
  • Used Burp Suite to intercept and map network calls.
  • Tracked down cloud footprints and guessed infra layout from IPs.
  • Reverse engineered what the company once built, but completely forgot.

Container Abyss: Only Errors Inside

Day 10

Nothing But Errors

The only access I could get was through a half-broken VM running Docker. Once inside, there were logs—just not the kind you want: endless syntax errors. Nothing pointed to what broke. Was it their code, a 3rd party, or something deeper?

Investigation Steps
  • Gained access to a VM running Docker and Nginx.
  • Checked logs—found only repeated syntax errors.
  • No traces of system-related errors.
  • Couldn't tell if requests from Nginx were reaching the app.
  • Still no documentation or reliable error trails.
  • Needed to find a deeper root cause.

Reverse Engineering the Unknown

Day 11

Manual Code Review & Guesswork

With no source code repo or build process in sight, the only way forward was to decompile, grep, and trace by hand. Searched for API endpoints, error handlers, anything resembling a contract or standard. Everything was legacy code and hard-coded URLs.

Investigation Steps
  • Manual code review via container shell access.
  • Hunted for KBank API endpoints inside the codebase.
  • Tried to identify where requests failed or were blocked.
  • Mapped out what little architecture info could be found.
  • Still no central documentation. It was all guesswork.

Network Trace & IP Whitelist

Day 12

Chasing the Network

Finally traced network paths out to KBank. Used my own dev machine to hit the endpoints, but got blocked—wrong IP. Tried from the VM. Miraculously, the old IP was still whitelisted at KBank. Confirmed: The system wasn’t blocked by the bank; the issue was internal.

Investigation Steps
  • Tested connectivity from dev machine to KBank API: blocked.
  • Tested from inside the VM: not blocked—IP still whitelisted.
  • Confirmed: No external firewall or IP issues.
  • Problem isolated to something internal: code, SSL, or infra.
  • Narrowed investigation to SSL and system health.

Debugging and the Real Culprit

Day 13

Syntax, Silence, and SSL

After hours of digging, realized the syntax errors in return functions stopped any logs or responses from being recorded. Once fixed, a new error surfaced: the SSL certificate was expired. The payment gateway couldn't connect, and nothing in the logs gave a clue until the code itself was fixed first.

Investigation Steps
  • Fixed syntax errors in core return/response functions.
  • Restored logging so errors would show up.
  • Discovered SSL certificate was expired.
  • No alerting or monitoring for certificate expiry.
  • Root cause: SSL plus bad code hygiene.
  • System finally revealed its real issue.

The Certificate Odyssey

Day 14

No One Knew Who Owned SSL

Contacted every possible person—no one knew where the last SSL cert came from, or who had access. Had to generate a new CSR, coordinate with the bank and a new provider, and rebuild the trust chain from scratch. Eventually, the system came back to life.

Investigation Steps
  • Tracked down SSL certificate provider (after much chaos).
  • Discovered no one submitted a CSR before.
  • Generated a new CSR and requested a new certificate.
  • Installed and configured SSL on the system.
  • Finally restored payment gateway connectivity.
  • Set up monitoring for SSL expiry going forward.

System Rebooted, Lessons Burned In

Day 15+

Alive, But Wiser

After two weeks of chaos, the business finally came back online. QR code payment, web, and app worked again. Monitoring and documentation processes were created—painfully late, but a lesson never forgotten.

Investigation Steps
  • Created a new SSL certificate and installed it.
  • Restored service: website, app, and payment gateway.
  • Implemented monitoring for critical infra points.
  • Started documenting tech stack and system layout.
  • Promised never to run blind again.
  • Business survived, but just barely.

Hard Lessons from the Edge

This story is a reminder: It takes just one point of failure—and a lack of documentation—to cripple a business. Always keep your knowledge, credentials, and infra visible, not just in people's heads. Disaster doesn't book an appointment.

48h
Time to Solve
100%
System Restored
1
SSL Certificate

SSL Certificate Mystery

เลื่อนเพื่อไขปริศนา

The SSL Certificate Mystery

การไขปริศนา Payment Gateway ที่หยุดตอบสนองโดยไม่มีเบาะแสใดๆ

เลื่อนเพื่อไขปริศนา

ระบบเงียบงัน

หลังจาก VM กลับมาทำงาน

Request เข้า แต่ไม่มี Response

หลังจากเปิด VM กลับมาทำงานได้ เราพบว่ามี Docker และ Nginx รันอยู่ เมื่อลองยิง request จาก web มาที่ API แล้วดูจาก log Nginx พบว่าข้อมูล request เข้าถึงได้ แต่ไม่มี response อะไรตอบกลับไปเลย เกิดข้อสงสัยว่าระบบเราชำรุด หรือ KBank เปลี่ยนนโยบาย

Investigation Steps
  • พบ Docker และ Nginx รันอยู่ใน VM
  • ทดสอบยิง request จาก web มาที่ API
  • ตรวจสอบ Nginx logs พบว่า request เข้าถึงได้
  • ไม่มี response ใดๆ ตอบกลับไป
  • ไม่มีข้อมูลว่า dev เก่าติดต่อ KBank ยังไง
  • ไม่มี documentation ของ KBank API

ความลึกลับของ Docker

การสำรวจภายใน Container

พบแต่ Syntax Error อย่างเดียว

เข้าไปดูใน Docker container พบว่ามี log syntax error แต่ไม่มี error ที่เกี่ยวกับระบบเราเลย ไม่ทราบว่าทำไมข้อมูลจาก Nginx ส่งมาไม่ถึง Docker เนื่องจากใน log มีแค่ syntax error เท่านั้น

Investigation Steps
  • เข้าไปตรวจสอบใน Docker container
  • พบ log syntax error ใน Docker
  • ไม่มี error message ที่เกี่ยวข้องกับระบบ
  • ไม่เข้าใจว่าทำไม Nginx ส่งข้อมูลไม่ถึง Docker
  • Log แสดงแค่ syntax error เท่านั้น
  • จำเป็นต้องหาจุดที่เกิด error

Reverse Engineering Hunt

การแกะรอย Code และ Endpoint

ตามหา KBank Endpoint ในโค้ด

ต้องทำ reverse engineering code ใน VM เพื่อหาว่ามี error อะไรและ KBank endpoint คืออันไหน ไม่มีข้อมูลใดๆ เหลืออยู่ ต้องแกะโค้ดทีละบรรทัดเพื่อเข้าใจระบบ

Investigation Steps
  • ทำ reverse engineering code ใน VM ทั้งหมด
  • ค้นหาว่ามี error อะไรซ่อนอยู่
  • ตามหา KBank API endpoint ในโค้ด
  • วิเคราะห์โครงสร้างระบบจากโค้ดที่เหลือ
  • ไม่มีเอกสารหรือคู่มือใดๆ ช่วย
  • ต้องเดาระบบจากโค้ดเพียงอย่างเดียว

การทดสอบ IP Whitelist

ทดสอบการเชื่อมต่อ KBank

ค้นพบความจริงเรื่อง IP Block

ใช้เครื่อง dev ยิง request ไปหา KBank API พบว่ามีการ block IP ที่ไม่อยู่ใน whitelist แต่เมื่อลองให้ VM เรายิง request ไปที่ KBank พบว่า VM เราไม่ถูก block แปลว่า IP เรายังเชื่อมต่อได้

Investigation Steps
  • ใช้เครื่อง dev ทดสอบยิง request ไป KBank API
  • พบว่า KBank block IP ที่ไม่อยู่ใน whitelist
  • ทดสอบให้ VM ยิง request ไป KBank API
  • พบว่า VM ไม่ถูก block จาก KBank
  • IP ของ VM ยังสามารถเชื่อมต่อได้
  • สรุปว่าปัญหาเกิดจากระบบเรา ไม่ใช่ IP block

แกะ Syntax Error

การแก้ไข Code

ความจริงที่ซ่อนหลัง Syntax Error

เริ่มแกะโค้ดและแก้ syntax error พบว่า Docker ไม่แสดง log จาก KBank เพราะ function ที่เขียนให้ return response มี syntax error หลังแก้ syntax error พบว่ามี SSL Certificate หมดอายุ

Investigation Steps
  • เริ่มแกะและแก้ไข syntax error ในโค้ด
  • พบว่า function return response มี syntax error
  • Syntax error ทำให้ไม่มี log กลับมาจาก KBank
  • หลังแก้ syntax error พบ SSL Certificate หมดอายุ
  • ไม่มี log เพราะ response function ไม่ทำงาน
  • ปัญหาจริงคือ SSL Certificate

SSL Certificate Mystery

การติดตาม SSL Provider

SSL ที่ไม่มีใครรู้ว่ามาจากไหน

ติดต่อทีมเพื่อหาว่าใช้บริการ SSL กับผู้ให้บริการไหน ได้รับข้อมูลการนำส่ง SSL ครั้งล่าสุดซึ่งพบว่าเป็น SSL ที่ออกโดยใครไม่รู้ ติดต่อผู้ให้บริการพบว่าไม่มีการส่งข้อมูล CSR ให้

Investigation Steps
  • ติดต่อทีมหาข้อมูลผู้ให้บริการ SSL
  • ได้รับข้อมูล SSL ครั้งล่าสุด
  • พบว่าเป็น SSL ที่ออกโดยใครไม่รู้
  • ติดต่อผู้ให้บริการเรื่อง CSR origin
  • พบว่าไม่มีการส่ง CSR ให้ SSL provider
  • สร้าง CSR ใหม่และขอออก SSL Certificate

ระบบกลับมาทำงาน

Problem Solved

Payment Gateway ทำงานได้อีกครั้ง

หลังจากสร้าง CSR และขอทำการออก SSL ใหม่ ระบบกลับมาทำงานได้อีกครั้ง ลูกค้าสามารถใช้ QR Code Payment ได้ตามปกติ และได้สร้างระบบป้องกันปัญหาในอนาคต

Investigation Steps
  • สร้าง CSR (Certificate Signing Request) ใหม่
  • ขอออก SSL Certificate ใหม่จากผู้ให้บริการ
  • ติดตั้ง SSL Certificate ใหม่เข้าระบบ
  • Payment Gateway กลับมาทำงานได้ตามปกติ
  • ลูกค้าสามารถใช้ QR Code Payment ได้
  • สร้างระบบ monitoring SSL expiration

บทเรียนจากปริศนา SSL Certificate

คดีนี้สอนให้เห็นว่า syntax error อาจซ่อนปัญหาจริง และการขาด SSL certificate monitoring ทำให้เกิดปัญหาได้โดยไม่ทันรู้ตัว การมีระบบ alert และ documentation ที่ดีจึงมีความสำคัญอย่างยิ่ง

48h
เวลาไขปริศนา
100%
ระบบกู้คืน
1
SSL Certificate