บีคอน (BCON, Business Container) คอนเทนท์เนอร์สำหรับแอพพลิเคชันทางธุรกิจ

DINOQ Co.,Ltd
3 min readJan 20, 2016

DinoQ Entrepreneur Platform 2016/01 ( info@dinoq.com )

การพัฒนาแอพพลิเคชันใดๆก็ตาม หลังจากนักพัฒนาทำการพัฒนาเสร็จแล้ว ขั้นตอนต่อไปก็คือการเอาโค้ด หรือแพคเกจแอพพลิเคชัน ที่ได้จากการเอาโค้ดมาผ่านกระบวนการคอมไพล์และสร้างเป็นแพคเกจ ซึ่งโค้ดหรือแพคเกจนี้จะถูกนำไปบรรจุใน Web หรือ Application Server ซึ่งกระบวนการนี้เราจะเรียกว่าการดีพลอยท์ (Deploy) หลังจากนั้น Web หรือ Application Server จะสามารถให้บริการตามลอจิกที่นักพัฒนากำหนดไว้ในโค้ด

โดยแท้จริงแล้วกระบวนการดีพลอยท์แอพพลิเคชันใดๆบน Web หรือ Application Server นั้น จะไม่ใช่แค่ใส่โค้ด หรือแพคเกจลงไปเฉย มันมักจะรวมถึงกำหนดค่าการใช้งานต่างๆด้วย รวมถึงทำการติดตั้งและกำหนดค่าของสภาพแวดล้อมการใช้งานเริ่มต้นที่อาจไม่ใช่แค่ Web หรือ Application Server แต่อาจจะรวมไปถึงบริการหรือเครื่องมืออื่นๆที่อยู่รอบข้าง ที่จำเป็นต่อการใช้งานของแอพพลิเชันที่เราจะนำมาดีพลอยท์ เช่น Cache, Service endpoint, Queue, Mail service และอื่นๆ

ในยุคต่อๆมาจึงได้เกิด Containor technology ขึ้นมาเพื่อช่วยให้การเตรียมสภาพแวดลอมในการทำงานของแอพพลิเคชันทำได้ง่าย สะดวกสบายขึ้น ซึ่งคอนเทนท์เนอสำหรับแอพพลิเคชันทางธุรกิจ (Business Container) ที่เราจะกล่าวถึงก็ถือว่าเป็นส่วนหนึ่งของ Containor technology นี้

คอนเทนท์เนอสำหรับแอพพลิเคชันทางธุรกิจ (Business Container) คือ สภาพแวดล้อมสำหรับใช้บรรจุลอจิกการทำงานของธุรกิจใดๆ โดยสิ่งที่บรรจุอยู่ภายในนี้มักจะเป็นกลุ่มของโค้ด หรือข้อมูลไบนารี และทรัพยากรณ์อย่างๆที่ใช้ในการทำงานของโค้ด เช่น รูปภาพ ไฟล์ข้อมูล หรืออื่นๆ ซึ่งมักจะรวมกลุ่มเป็นแพคเกจ (Package) จะทำการบีบอัด (Zip) ให้เป็นไฟล์เดียว (หรือบางแพลตฟอร์มก็จะไม่บีบอัด)

ซึ่งสรุป คือทุกๆลอจิกทางธุรกิจจะประกอบไปด้วย

  • สภาพแวดล้อมสำหรับทำงาน (Container)
  • ชุดโค้ดสำหรับธุรกิจใดๆ (Logic package)

ซึ่งหากแบ่งจับคู่ให้เห็นภาพกับหลายๆ แพลตฟอร์มการพัฒนาระบบในปัจจุบันจะเห็นภาพชัดเจนขึ้น

พีเอชพีแพลตฟอร์ม (PHP Platform) ในส่วนของ PHP Platform จะได้ว่า Container นั่นคือ Web server ซึ่งปกติก็ใช้ Apache httpd บวกกับ PHP Library เสริม (ทำการติดตั้งค่อนข้างยุ่งยาก) และสำหรับ Logic package ก็จะเป็นกลุ่มไฟล์นามสกุล .php พร้อมทั้งไฟล์อื่นๆเพื่อใช้ในการทำงาน

ข้อสังเกตุของ Container ของ PHP Platform คือ ติดตั้งยุ่งยาก มีขั้นตอนและส่วนประกอบเยอะ ยิ่งหากต้องการความสามารถเพื่อสนับสนุนธุรกิจขนาดใหญ่ด้วยแล้ว ยิ่งยากขึ้นไปอีก เช่น Load balacing, session replicate หรืออื่นๆ

จาวาแพลตฟอร์ม (Java Platform) ในส่วนของ Java Platform จะได้ว่าContainer นั่นคือ Application server มีหลายตัว เช่น Tomcat, WebLogic, WebSphere, JBoss หรืออื่นๆ และสำหรับ Logic package ก็จะได้แก่ Package มาตรฐานของ Java อยู่แล้ว เช่น Web Archive (.WAR), Enterprise Archive (.EAR) เป็นต้น

ข้อสังเกตุของ Container ของ Java Platform ก็จะคล้ายๆของ PHP ถึงจะออกแบบมาเพื่อตอบสนองตวามต้องการของธุรกิจขนาดใหญ่ แต่ก็ยังติดตั้งยุ่งยากอยู่ดี

สำหรับแพลตฟอร์มอื่นๆ Node.js, .Net, Ruby, Python และอื่นๆ ขอข้ามไปนะครับ เพราะคล้ายๆกัน

ดังนั้นจึงมีหลายๆเทคโนโลยีที่พยายามเตรียมสภาพแวดล้อมการทำงานนี้ให้พร้อมใช้งานได้ทันที ไม่ต้องมีขั้นตอนติดตั้งที่ยุงยาก ไม่ว่าจะเป็นธุรกิจขนาดใหญ่ หรือเล็ก ซึงผมขอแบ่งออกเป็น 2 แบบ นะครับ

แบบที่ 1 ขอเรียกว่า On premise container ได้แก่ Cloud Foundry, VMWare และ Docker โดยเทคโนโลยีพวกนี้จะทำการ snap short พวก Web server หรือ Application server ที่ทำการตั้งค่าไว้เรียบร้อยแล้ว เก็บเป็นไฟล์ขนาดใหญ่ไว้เราเรียกว่า อิมเมจไฟล์ (Image file) ซึ่งอาจมีหลายๆไฟล์ก็ได้ (ขึ้นอยู่กับขนาดและรูปแบบของโปรเจ็คท์) เมื่อนำ Image มาใช้เราก็จะได้ Web server หรือ Application server ในสถานะล่าสุดที่เราทำการตั้งค่าไว้

แบบที่ 2 ขอเรียกว่า PaaS container ได้แก่ Google App Engine, Azure WebApp และ Amazon Beanstalk เป็นต้น เทคโนโลยีพวกนี้ผู้ให้บริการจะทำการติดตั้ง และตั้งค่าไว้เรียบร้อบ เราสามารถเรียกใช้งานและตั้งค่าเพิ่มเติมเล็กน้อย ให้เหมาะสมกับโค้ดเรา ซึ่งทำให้สะดวกสบายมาก

ขออ้างอิงบทความที่ผมเขียนเกียวกับเรื่อง การพัฒนาโปรแกรมแบบเป็นส่วนๆ (Fragment Programming) ซึ่งจะเกี่ยวของกับส่วน ชุดโค้ดสำหรับธุรกิจใดๆ (Logic package) โดยตรง สรุปคือ ในแต่ละโปรแกรม ซึ่งจะประกอบไปด้วยโค้ดหลายๆส่วน ในขณะที่โค้ดที่เป็นลอจิกของธุรกิจนั้นมีไม่มากแต่ไปเสียเวลากับอย่างอื่น เช่น โค้ดที่เกี่ยวกับความปลอดภัย (หน้าจอเข้าระบบ, จัดการผู้ใช้สิทธิ์การเข้าถึงระบบ, การตรวจสอบสิทธิ์การการใช้งาน), โค้ดที่เกี่ยวกับการบันทึกการทำงาน และอื่นๆ

แล้ว BCON หล่ะ คือ อะไร เกี่ยวกันยังไง

BCON หรือ Business Containor แนวคิดใหม่ คือการออกแบบการทำงานให้มี Container อีกชั้นหนึ่งที่จะมาทำงานบน On premise container หรือ PaaS container เพื่อจัดการเกียวกับ การพัฒนาโปรแกรมแบบเป็นส่วนๆ (Fragment Programming) โดย BCON จะดูแลในเรื่องความปลอดภัย (หน้าจอเข้าระบบ, จัดการผู้ใช้สิทธิ์การเข้าถึงระบบ, การตรวจสอบสิทธิ์การการใช้งาน), การบันทึกการทำงาน, การใช้ทรัพยากรณ์ระบบ, การเข้าใช้ข้อมูล, กำหนดโครงสร้างข้อมูล, เครื่องมือในการพัฒนาระบบ และอื่นๆ

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

นอกจากนั้น BCON ที่กล่าวมาข้างต้นว่าเป็นแอพพลิเคชันตัวนึง ซึ่งภายในแอพพลิเคชันนั้นยังประกอบไปด้วย BCON API ที่ทำการเขียนเพื่อห่อหุ้มการใช้งานบริการ(Services) จากข้างนอก เช่น Queue, Cache, Mail, SMS, Social connector และอื่นๆ เพื่อเตรียมแพลตฟอร์มพื้นฐานของการทำธุรกิจ

และหากแนวคิด BCON นี้นำไปใช้งานจริง และนำเสนอในรูปแบบ Cloud Computing ลองวิเคราะห์ดูดีๆ จะเห็นว่ามันก็คือเทคโนโลยีที่อยู่ในกลุ่ม Application Development as a Service(APaaS) นั่นเอง

สรุปได้ว่า BCON = APaaS

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

BCON ช่วยให้เราเขียนโปรแกรมน้อยลง งานเสร็จเร็วขึ้น
BCON = APaaS ช่วยให้เราดูแลระบบง่ายขึ้น ลดงานให้น้อยลง ทำให้ดูแลลูกค้าได้เยอะขึ้น

ดูบทความอื่นๆ กดลิ้งค์เลยครับ

--

--

DINOQ Co.,Ltd

ไดโนคิวแพลตฟอร์ม คือแพลตฟอร์มเครื่องมือการพัฒนา และบริหารจัดการแอพแบบครบวงจร ลดงาน ลดขั้นตอน และลดคนในกระบวนการพัฒนาสูงสุดถึง 90% เร็วขึ้น ง่ายขึ้นสูงสุดถึง 90%