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.
Connected with
Strategic technology leadership across diverse sectors
EdTech
NFT/Web3
EdTech NFT
FinTech
Digital Publishing
Holding
Blockchain
Trusted technologies for product growth, reliability, and rapid innovation.
Scroll to follow the chaos unfold
A true story of a startup’s worst nightmare: No IT, no docs, no clue—and then the entire business went offline.
Q1, Year XXXX
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...
Day 9 - Entry Point
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.
Day 10
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?
Day 11
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.
Day 12
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.
Day 13
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.
Day 14
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.
Day 15+
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.
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.
เลื่อนเพื่อไขปริศนา
การไขปริศนา Payment Gateway ที่หยุดตอบสนองโดยไม่มีเบาะแสใดๆ
หลังจาก VM กลับมาทำงาน
หลังจากเปิด VM กลับมาทำงานได้ เราพบว่ามี Docker และ Nginx รันอยู่ เมื่อลองยิง request จาก web มาที่ API แล้วดูจาก log Nginx พบว่าข้อมูล request เข้าถึงได้ แต่ไม่มี response อะไรตอบกลับไปเลย เกิดข้อสงสัยว่าระบบเราชำรุด หรือ KBank เปลี่ยนนโยบาย
การสำรวจภายใน Container
เข้าไปดูใน Docker container พบว่ามี log syntax error แต่ไม่มี error ที่เกี่ยวกับระบบเราเลย ไม่ทราบว่าทำไมข้อมูลจาก Nginx ส่งมาไม่ถึง Docker เนื่องจากใน log มีแค่ syntax error เท่านั้น
การแกะรอย Code และ Endpoint
ต้องทำ reverse engineering code ใน VM เพื่อหาว่ามี error อะไรและ KBank endpoint คืออันไหน ไม่มีข้อมูลใดๆ เหลืออยู่ ต้องแกะโค้ดทีละบรรทัดเพื่อเข้าใจระบบ
ทดสอบการเชื่อมต่อ KBank
ใช้เครื่อง dev ยิง request ไปหา KBank API พบว่ามีการ block IP ที่ไม่อยู่ใน whitelist แต่เมื่อลองให้ VM เรายิง request ไปที่ KBank พบว่า VM เราไม่ถูก block แปลว่า IP เรายังเชื่อมต่อได้
การแก้ไข Code
เริ่มแกะโค้ดและแก้ syntax error พบว่า Docker ไม่แสดง log จาก KBank เพราะ function ที่เขียนให้ return response มี syntax error หลังแก้ syntax error พบว่ามี SSL Certificate หมดอายุ
การติดตาม SSL Provider
ติดต่อทีมเพื่อหาว่าใช้บริการ SSL กับผู้ให้บริการไหน ได้รับข้อมูลการนำส่ง SSL ครั้งล่าสุดซึ่งพบว่าเป็น SSL ที่ออกโดยใครไม่รู้ ติดต่อผู้ให้บริการพบว่าไม่มีการส่งข้อมูล CSR ให้
Problem Solved
หลังจากสร้าง CSR และขอทำการออก SSL ใหม่ ระบบกลับมาทำงานได้อีกครั้ง ลูกค้าสามารถใช้ QR Code Payment ได้ตามปกติ และได้สร้างระบบป้องกันปัญหาในอนาคต
คดีนี้สอนให้เห็นว่า syntax error อาจซ่อนปัญหาจริง และการขาด SSL certificate monitoring ทำให้เกิดปัญหาได้โดยไม่ทันรู้ตัว การมีระบบ alert และ documentation ที่ดีจึงมีความสำคัญอย่างยิ่ง