ป้ายกำกับ: Depoldering

ถอดบทเรียนโครงการ Room for the River ของเนเธอร์แลนด์ถอดบทเรียนโครงการ Room for the River ของเนเธอร์แลนด์

ในฐานะ System Architect เราทราบดีว่าการออกแบบระบบที่ยั่งยืนไม่ได้หมายถึงการสร้างกำแพงที่แข็งแกร่งที่สุด แต่หมายถึงการออกแบบที่สามารถปรับตัวและยอมรับการเปลี่ยนแปลงได้ โครงการ Room for the River (Ruimte voor de Rivier) ของเนเธอร์แลนด์ คือตัวอย่างระดับโลกของการเปลี่ยนกระบวนทัศน์ (Paradigm Shift) จากการพยายาม ‘บีบและกักน้ำ’ ด้วยคันดินสูงชัน มาเป็นการ ‘ยอมสละพื้นที่บางส่วนเพื่อให้แม่น้ำมีพื้นที่ไหลอย่างปลอดภัย’

แม้ว่าประเทศไทยจะมีแนวคิดทุ่งรับน้ำอยู่แล้ว แต่ปัญหาเชิงโครงสร้างและความขัดแย้งทางระบบก็ทำให้การบริหารจัดการน้ำมักถูกมองเป็นเพียง ‘พื้นที่ผู้เสียสละ’ บทเรียนจากเนเธอร์แลนด์จึงสอนให้เรามองการจัดการน้ำเป็นเรื่องของการ ‘บริหารจัดการพื้นที่’ (Space Management) ไม่ใช่แค่การ ‘กักเก็บ’ (Containment) เท่านั้น

การถอยร่นคันดิน: หลักการ ‘Depoldering’ ในเชิงสถาปัตยกรรมระบบ

หลักการสำคัญที่สุดคือการ ‘รื้อและร่นแนวคันดินเดิม’ (Depoldering) ซึ่งในเชิงระบบข้อมูล (System Architecture) สามารถเทียบได้กับการยอมรับว่าโครงสร้างข้อมูลเดิม (Monolithic Schema) ที่เคยแข็งแกร่งและเชื่อถือได้ อาจกลายเป็นคอขวด (Bottleneck) ที่ขัดขวางการไหลของข้อมูล (Data Flow) ที่ยืดหยุ่นกว่า

การที่เราพยายามใช้ระบบเก่าที่แข็งแกร่งเกินไปในการรับมือกับปริมาณข้อมูล (หรือน้ำ) ที่เพิ่มขึ้น จะนำไปสู่ความล้มเหลวครั้งใหญ่ (Catastrophic Failure) เช่นเดียวกับที่คันดินที่สูงเกินไปจะสร้างแรงดันมหาศาลเมื่อแตก แนวคิดจึงเปลี่ยนจากการ ‘ป้องกัน’ ไปสู่การ ‘รองรับ’ (Accommodation) โดยการเพิ่มพื้นที่รับน้ำ (Floodplain) ให้กับระบบโดยรวม

การปรับใช้แนวคิดสู่การบริหารจัดการข้อมูลด้วย PostgreSQL

หากเราเปรียบเทียบระบบแม่น้ำกับระบบฐานข้อมูล (Database System) การจัดการน้ำล้นคือการจัดการข้อมูลที่ไหลท่วมเกินกว่าที่ตาราง (Schema) เดิมจะรับไหว เราต้องใช้เทคนิคที่คล้ายกับการ ‘ขยายพื้นที่’ หรือ ‘ปรับโครงสร้าง’ ข้อมูลให้รองรับการไหลที่เพิ่มขึ้น

ใน PostgreSQL เราสามารถใช้คำสั่งเพื่อจำลองการย้ายข้อมูลจากโครงสร้างเก่าที่ถูกจำกัด (Old Dike Records) ไปยังโครงสร้างใหม่ที่ยืดหยุ่นกว่า (Floodplain Data) โดยไม่สูญเสียข้อมูลสำคัญ ซึ่งเป็นการ ‘ถอยร่น’ ข้อมูลออกจากขอบเขตเดิม:

SQL

-- 1. ตรวจสอบข้อมูลเก่าที่ควรถูกย้าย (Identify obsolete data) </code><br/>SELECT <code>location_id, capacity</code> FROM old_dike_records WHERE <code>is_obsolete = TRUE;</code><br/><br/>-- 2. ทำการย้ายและขยายข้อมูลไปยังตารางใหม่ (Depoldering / Expanding the data space) </code><br/>INSERT INTO floodplain_data (location_id, new_capacity, flow_type) </code><br/>SELECT <code>old_location_id, 'Expanded', 'Natural Flow'</code> </code><br/>FROM <code>old_dike_records</code> WHERE <code>is_obsolete = TRUE;</code><br/>

บทสรุป: การเปลี่ยนกระบวนทัศน์สู่ความยืดหยุ่น

บทเรียนจาก Room for the River สอนเราว่า การแก้ปัญหาที่ยิ่งใหญ่ไม่ได้มาจากการสร้างกำแพงที่แข็งแกร่งที่สุด แต่มาจากการยอมรับความไม่แน่นอนและเพิ่มพื้นที่ให้ระบบได้หายใจ (Resilience) ในโลกของระบบสารสนเทศ การปรับใช้หลักการนี้หมายถึงการเปลี่ยนจากสถาปัตยกรรมแบบ Monolithic ไปสู่ Microservices หรือการใช้ Data Lake ที่มีความยืดหยุ่นสูง เพื่อให้ระบบสามารถ ‘รองรับ’ การไหลของข้อมูลที่เปลี่ยนแปลงได้อย่างปลอดภัยและยั่งยืน