What is Framework(s)? - A simplest explanation ever?

Share
What is Framework(s)? - A simplest explanation ever?
Photo by Xavi Cabrera / Unsplash
"Project นี้เราจะใช้ Spring Boot framework สำหรับ backend นะ..."

บทสนทนาทั่วไปที่เราคงจะเคยได้ยินมาอยู่เป็นประจำ ไม่ว่าคุณจะเป็น frontend หรือ backend คำว่า framework ก็เป็นสิ่งที่ทุกคนนั้นพูดถึงอยู่เป็นประจำ

Framework...Framework...Framework... – เป็นคำที่คนที่อยู่ในวงการ Software Engineer น่าจะได้เคยได้ยินหรืออย่างน้อยก็ต้องเคยพูดถึงมันบ้างซักครั้งแหละ

ซึ่งก็เคยมีคนถามผู้เขียนเหมือนกันว่า

พี่ๆ แล้ว Framework มันคืออะไร?

แน่นอนเราก็เอาคำว่า framework ไปใส่ใน Google Translate มันก็จะแปลว่าาา

ex-best friend before AI

กรอบ...โครง...เค้าโครง...ถ้าเราเอามาแปลซื่อ ๆ แบบนี้ ก็งงสิครับ ซึ่ง ณ ตอนนั้นผู้เขียนก็ไม่สามารถอธิบายได้ว่า Framework มันคืออะไรได้อย่างเต็มปาก นอกจากคำแปลที่ได้จาก Google Translate ที่ไม่ได้ช่วยให้เราเข้าใจมันมากขึ้นเลย


ซึ่งเวลาก็ได้ผ่านไปโดยที่คำถามนี้ก็ยังอยู่ในหัวของผู้เขียนตลอดเวลา จนกระทั่งวันหนึ่งผู้เขียนกำลังมองหาเก้าอี้ใหม่ที่จะนำมาใช้ในครัวอยู่ ซึ่งแน่นอนเราก็ต้องหาจากหลาย ๆ ที่ไม่ว่าจะเป็น IKEA, SB Furniture, Index Living, etc

ซึ่งแน่นอน แต่ละแบรนด์ก็มี design ที่แตกต่างกัน หรือ บางทีก็ตอบโจทย์คนละอย่างกัน

"เปรี้ยง เสมือนท้องฟ้าวิปริตแปรปรวนทันใด อังกอร์" ไม่ใช่! อยู่ดี ๆ ผู้เขียนก็เข้าใจว่า เราจะอธิบายคำว่า Framework ให้มัน simple ที่สุดได้ยังไง

Then, what is Framework?

ไหนแล้วมันคืออะไร

ให้เราลองเปรียบว่าถ้าเราอยากจะสร้าง service ซักตัว ก็เหมือนการที่เราอยากได้เก้าอี้ตัวนึง

ซึ่งเวลาเราอยากได้เก้าอี้เนี่ย ถ้าถามว่าเราสามารถซื้อไม้มา design เอง, ตัดไม้ วัดไม้ ซื้อผ้าบุเองได้มั้ย? แน่นอนมันทำได้ แต่แน่นอนมันก็ต้องใช้ทั้งเวลา และ ความพยายามอย่างมากกว่าจะได้เก้าอี้ขึ้นมาตัวนึงถูกไหม? และ บางทีมันก็อาจจะใช้งานไม่ได้ก็เป็นได้

แน่นอนการสร้าง service ก็เหมือนกัน ถ้าเราจะสร้างมันตั้งแต่ต้นเลย เราก็ทำได้เช่นกัน แต่แน่นอนก็ต้องใช้ทั้งเวลา และ แรงกาย แรงใจ อย่างมากเพื่อที่จะสามารถให้มันใช้บน production ได้

ดังนั้น Framework ต่าง ๆ เราที่เลือกใช้ก็เหมือนพวกแบรนด์เฟอร์นิเจอร์ที่เราไปหาซื้อเก้าอี้นั่นแหละ

ยกตัวอย่าง IKEA ถึงแม้เราจะต้องเอามาต่อเอง แต่อย่างน้อยเค้าก็ได้เตรียมขนาดไม้ที่ถูกต้อง น๊อตที่ต้องใช้ แล้วยังมี instruction มาให้เราด้วยว่าต้องเริ่มจากจุดไหนไปจุดไหน ทำให้เราสามารถสร้างเก้าอี้โดยใช้เวลาน้อยที่สุดและมั่นใจแน่ ๆ ว่าเราจะนั่งมันได้ ... ถ้าประกอบถูกอ่ะนะ

ดังนั้น Framework ที่เราพูดถึงหรือเลือกใช้กันนั้นก็คือสิ่งที่ถูกเตรียมไว้เพื่อให้เราสามารถสร้างสิ่งต่าง ๆ ได้อย่างง่ายและรวดเร็วยิ่งขึ้น ซึ่งแต่ละ Framework ก็มี document ให้เราทำตามได้ เช่นเดียวกับ instruction ของเก้าอี้จาก IKEA หรือ แบรนด์อื่น ๆ

ซึ่งแต่ละ Framework ก็จะมีจุดประสงค์หรือจุดเด่นของตัวเองแตกต่างกัน เช่นเดียวกับเก้าอี้จากแบรนด์ต่าง ๆ ที่ถึงแม้จะมีไว้นั่งเหมือนกัน แต่ก็อาจจะ design มาเพื่อจุดประสงค์ที่แตกต่างกันก็เป็นได้


ทิ้งท้ายอีกนิด การนิยาม Framework นั้นเป็นเรื่องของปัจเจกบุคคล บางคนอาจจะเปรียบเทียบ Framework กับสิ่งอื่น หรือ ไม่ต้องใช้การเปรียบเปรยเลยก็เป็นได้ แต่นี่คือสิ่งที่ทำให้ผู้เขียนรู้สึกเข้าใจกับคำคำนี้มากขึ้นและสามารถอธิบายคำนี้ได้อย่างเต็มปากเต็มคำ

หวังว่าบทความนี้จะเป็นประโยชน์ไม่มากก็น้อย

💡
Fun Fact: จริง ๆ ผู้เขียนนึกเรื่องนี้ได้ตอนขับรถอยู่แต่เปลี่ยนเนื้อหาเพื่อความ smooth ของบทความ 😂

Read more

The Five Ideals

The Five Ideals

จากหนังสือ The Unicorn Project ในนั้นจะมีที่ปรึกษาเก่ง ๆ คนหนึ่งชื่อ Erik เป็นเหมือนเซ็นเซหาตัวยาก เดี๋ยวก็มา เดี๋ยวก็ไป ถ้าโชคดีก็จะเจอเค้าว่าง แล้วเค้าก็จะสอนอะไรที่สำคัญ ๆ แต่ฟังดูล้ำ ๆ และลึกซึ้ง

By Chokchai Phatharamalai
Communication, Reliability and Modern concepts - System Design, Simply Explained

Communication, Reliability and Modern concepts - System Design, Simply Explained

บทความนี้จะอธิบายพื้นฐานของ System Design โดยต่อยอดจากตัวอย่าง Gym Application เพื่อให้เห็นภาพว่า เมื่อระบบเริ่มเติบโตและถูกแยกออกเป็นหลาย Service แต่ละ Service จะสื่อสารและทำงานร่วมกันอย่างไร งานแบบไหนควรสื่อสารแบบ Synchronous งานแบบไหนควรประมวลผลแบบ Asynchronous รวมถึงอธิบาย Concept พื้นฐานต่าง ๆ ที่ควรรู้ เช่น API

By Boonsong Srithong
Race condition

Race condition

ผมกำลังอ่านหนังสือ The Unicorn Project ซึ่งเป็นนิยายเกี่ยวกับ developer สาวคนหนึ่งที่ใช้ชีวิตในองค์กรท่ามกลางกระแส digital disruption อ่านแล้วสนุกมาก เป็นเรื่องที่ตื่นเต้น และหลาย ๆ dynamic ที่เกิดขึ้นก็คล้ายกับที่ผมพบเจอในบริษัทซอฟต์แวร์ เลยทำให้

By Chokchai Phatharamalai
Distributed Systems Concepts - System Design, Simply Explained

Distributed Systems Concepts - System Design, Simply Explained

ในช่วงแรก Product เราสามารถออกแบบระบบให้อยู่ใน Server และ Database เดียวกันได้ แต่เมื่อระบบโตขึ้น มีผู้ใช้งานเพิ่มขึ้น ข้อมูลเยอะขึ้น ระบบเริ่มทำงานช้าลดเรื่อยๆ สิ่งที่หนีไม่ได้คือการ Decomposition Service ไปเป็น Distributed System เช่น Member Service, Booking Service, Payment

By Boonsong Srithong