Skip to Content

Category Archives: Blog

EDB Postgres ‘Relational Database’ ระบบจัดการฐานข้อมูลเชิงสัมพันธ์

ฐานข้อมูล (Database) ถือเป็นหัวใจสำคัญขององค์กรที่ต้องมีการบริหารจัดการให้มีประสิทธิภาพ ดังนั้นองค์กรส่วนใหญ่จึงมองหาโปรแกรม หรือโซลูชั่นเข้ามาช่วยบริหารจัดการฐานข้อมูล ในปัจจุบันก็มีกระแสที่องค์กรได้เล็งเห็นความสามารถว่า ซอฟต์แวร์โอเพ่นซอร์ส (Open-source Software) ก็ทำงานได้ดีไม่แพ้ซอฟต์แวร์เพื่อการค้า (Commercial License) อีกทั้งยังยืดหยุ่นเปิดกว้างมากกว่า สตรีมฯ จึงขอแนะนำโซลูชั่นที่จะเข้ามาเพิ่มประสิทธิภาพระบบจัดการฐานข้อมูล สามารถดึงข้อมูลมาใช้ได้อย่างรวดเร็วด้วยวิธีการประมวลผลข้อมูลและจัดเก็บในรูปแบบของตารางข้อมูลที่เชื่อมต่อกัน โดยมีระบบ EDB (Enterprise DB) ซึ่งเป็นระบบการจัดการฐานข้อมูลเชิงสัมพันธ์ หรือ RDBMS (Relational Database Management System) เป็นการประมวลผลข้อมูลและจัดเก็บในรูปแบบตารางที่เชื่อมต่อกันจากโค้ดที่ฝังอยู่ในข้อมูล เช่น ข้อมูลเลขที่บัตรประจำตัวประชาชน สามารถดึงข้อมูล ชื่อ ที่อยู่ เบอร์โทรศัพท์ หรือข้อมูลส่วนตัวอื่นๆ ที่กรอกในตอนแรกของการจัดเก็บ นำมาใช้งานได้ ซึ่งเป็นการพัฒนามาจากโอเพ่นซอร์ส ชื่อดังอย่าง PostgreSQL ที่นำมาพัฒนาเพิ่มขีดความสามารถพร้อม Services & Support โดย EDB (Enterprise DB) ที่สำคัญสามารถช่วยลูกค้าลดค่าใช้จ่ายในการจัดหา Commercial License ลงได้เป็นอย่างมาก

ซึ่งปัจจุบันองค์กรทั่วโลกให้การยอมรับ และตื่นตัวกับการแสวงหาโอเพ่นซอร์สเข้ามาใช้งานในองค์กรแทบทุกอย่าง โดยหากพูดถึงประโยชน์นั้นมี 3 ปัจจัยหลักคือ

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

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

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

จากความโดดเด่นเหล่านี้ Enterprise DB (EDB) จึงได้ต่อยอดให้ PostgreSQL มีฟีเจอร์สำหรับการทำงานระดับสูง เช่น

• Security – ตรวจสอบระดับ Session ได้ว่ามีกิจกรรมใดเกิดขึ้นในฐานข้อมูล ซึ่งเหนือกว่า PostgreSQL ธรรมดาที่ user ID อาจถูกแชร์กัน รวมถึงมีกลไกช่วยป้องกันการโจมตีแบบ SQL Injection และยังได้รับการรับรองจากกระทรวงการป้องกันของสหรัฐฯ และ FIPS 140-2 พร้อมเครื่องมือสำหรับช่วยดูแลข้อมูลให้เป็นไปตาม GDPR

• Enterprise Manager – ลูกค้าของ EDB PostgreSQL จะได้รับเครื่องมือช่วยเหลือมากมายจากเครื่องมือ Postgres Enterprise Manager เช่น Dashboard แสดงผลที่ปรับแต่งได้ แม้กระทั่งความสามารถคาดการณ์ความจุของพื้นที่จัดเก็บ ไปจนถึงมีส่วนช่วยวิเคราะห์และบริหารจัดการ Log ดูว่าในการทำงานมีประสิทธิภาพส่วนใดที่ติดขัด เป็นต้น

•  Data Adapters – ทีมงาน EDB เป็นผู้พัฒนาหลักในการพัฒนาเรื่อง Foreign Data Wrapper (FDW) บนมาตรฐานของ SQL/MED โดยเป็นหัวหอกในการพัฒนา FDWs for MySQL, MongoDB และ Hadoop รวมถึงการเชื่อมต่อ PostgreSQL และ Oracle เข้าด้วยกันโดยไม่ต้องมีซอฟต์แวร์หรือฮาร์ดแวร์เสริม

•  Migration Toolkit – มีเครื่องมือรองรับการย้ายค่ายจากฐานข้อมูลเดิมทั้งออนไลน์และออฟไลน์ โดยรองรับฐานข้อมูลยอดนิยมต่างๆ เช่น Oracle, Sybase, Microsoft SQL Server และ MySQL ซึ่งเครื่องมือ Migration ของ EDB Postgres นี้การันตีความสามารถรองรับ Stored Procedures และ PL/SQL ได้ซึ่งเหนือกว่าเครื่องมือทั่วไป

•  Failover Manager – ผู้ใช้งาน EDB PostgreSQL มั่นใจได้ว่าการทำงานของระบบจะไม่มีสะดุดเพราะมีเครื่องมือทำ Failover โดยรองรับคลัสเตอร์ได้หลายกลุ่ม อีกทั้งยังทำได้อัตโนมัติทั้งไปและกลับ หรือการทำ Virtual IP และ Load Balancer

•  Backup & Recover – สามารถทำการ Backup และกู้คืนข้อมูลได้จาก Local และ Remote มีการบีบอัดข้อมูลเพื่อลดพื้นที่ และรองรับการสำรองข้อมูลแบบ Incremental รวมถึงกู้คืนได้ใน Point-in-time และออกรายงานต่างๆ ได้

ข้อสังเกตสำคัญของ EDB PostgreSQL คือมีความสามารถในการทำงานที่สามารถแทน Oracle Database ได้อย่างยอดเยี่ยม แต่สิ่งหนึ่งที่ EDB PostgreSQL น่าสนใจกว่าก็คือ “เรื่องของค่าใช้จ่าย” ที่ประหยัดกว่าระบบของ Oracle อย่างเห็นได้ชัด ซึ่งเมื่อเทียบกันแล้วไม่ว่าจะเป็นต้นทุนการทำงาน หรือต้นทุนในแง่ของการใช้ MA ของระบบก็ประหยัดกว่า ส่งผลให้ผลองค์กรสามารถควบคุมค่าใช้จ่ายโดยรวมได้เป็นอย่างดี

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

สนใจสอบถามข้อมูลเพิ่มเติม

ปรึกษาฟรี!

ฝ่ายการตลาด

บริษัท สตรีม ไอ.ที. คอนซัลติ้ง จำกัด

Email: marketing@stream.co.th

Facebook: https://www.facebook.com/Streamitconsulting

Tel. 0-2679-2233

0 0 Continue Reading →

Gherkin and Cucumber ทางเลือกใหม่ในการจัดการ Automation Testing ให้เป็นระบบ

ในกระบวนการพัฒนา Software แบบ Agile นั้น ใช้ User Story เพื่ออธิบาย Feature, Requirement ต่าง ๆ ของ Software ในมุมมองของ end-user แต่อย่างไรก็ตาม ก็ยังคงมีอุปสรรคในการสื่อสาร User Story เหล่านี้ระหว่าง Business Team และ Tech Team ให้เข้าใจตรงกัน Gherkin ถูกประดิษฐ์ขึ้นเพื่อช่วยแก้ไขปัญหานี้

 

Gherkin เป็นภาษาสำหรับบรรยาย Requirement และ Acceptance Criteria ในรูปแบบที่คล้าย Human Language ซึ่งช่วยให้ทีมงานทำความเข้าใจ Requirement ต่าง ๆ ได้ง่าย ทั้งในเชิง Business และ Technical

 

Gherkin Systax

การอธิบาย Scenario ด้วย Gherkin มีองค์ประกอบดังนี้

  1. Scenario: อธิบายสถานการณ์ของการใช้ระบบ
  2. Given: Precondition / Context / Step ที่ต้องเกิดขึ้นเพื่อนำระบบไปอยู่ใน State ที่ต้องการ ก่อนที่ผู้ใช้งานจะมี Interaction ใด ๆ กับระบบ ส่วนของ Given สามารถมีหลายข้อได้ และเชื่อมกันด้วย And
  3. When: Interaction ต่างที่ User กระทำ หากมีหลาย Action ให้เชื่อมด้วย And
  4. Then: ผลลัพธ์ที่เกิดขึ้น มักจะกล่าวถึงสิ่งที่เราต้องตรวจสอบ เช่น user interface, report, message, command output เป็นต้น และยังรวมถึง External System ที่เกี่ยวข้องด้วย เช่น หากมีการส่งข้อมูลไปยังระบบอื่น

 

Case Study: Login

ในบทความนี้ขอยกกรณีศึกษา User Story การเข้าสู่ระบบ (Login) โดยให้มี User Story ดังนี้

As a customer, I want to login using username and password, so that I can see information in the homepage.

 

Business Analyst (BA) สามารถเขียน Scenario ต่างๆ ในรูป Gherkin ได้ดังต่อไปนี้


Scenario Outline: Check login is successful with valid credentials

Given user is on login page

When user enters valid username and password – username: <username>, password: <password>

And clicks on login button

Then user is navigated to the home page

Examples:

| username | password |

| Raghav   |    12345 |

| Ele      |    12345 |


Scenario Outline: Check login is failed with invalid credentials

Given user is on login page

When user enters invalid username and password – username: <username>, password: <password>

And clicks on login button

Then error message is displayed – invalid credential

Examples:

| username | password |

|                    |    11111 |


 

จากตัวอย่าง มีการใช้ Example เพื่อกำหนด Test Data (Sample) สำหรับการทดสอบ โดยแต่ละ Scenario แรกมี 2 sample และ Scenario ที่สองมี 1 sample สิ่งที่เกิดขึ้นคือ เมื่อทำการทดสอบ โปรแกรมจะนำค่าใน Sample นี้ไปแทนค่า Variable ต่าง ๆ ของ Scenario นั้น เช่น <username>, <password>

นอกจากนี้แล้วเราสามารถใช้ Tag เพื่อใช้แบ่งกลุ่ม จัดระเบียบ จำแนก scenario ได้ โดยใส่เครื่องหมาย @ ตามด้วยข้อความใด ๆ ที่เราต้องการ ไว้หน้า Scenario เช่น เราต้องการแยก Positive/Negative Test หรือต้องการกำหนด Scenario สำหรับ Smoke Test ก็สามารถใส่ Tag @positive, @negative, @smoke ลงไปได้

Tag เหล่านี้จะถูกใช้ตอน Execute Test โดยระบุ Tag Name ของ Scenario ที่เราต้องการทดสอบลงไป โปรแกรมก็จะ Execute เฉพาะ Scenario เหล่านั้นให้

 


@positive

@smoke

Scenario Outline: Check login is successful with valid credentials


@negative

Scenario Outline: Check login is failed with invalid credentials


 

เรารวบรวม Scenario ที่เป็นรูปแบบ Gherkin ไว้ใน File ที่เรียกว่า Feature File และ File นี้จะถูกนำมาสร้างเป็น Code สำหรับ Automated Test ได้ โดยอาศัยเครื่องมือที่ชื่อว่า Cucumber โดยในบทความต่อไปนี้จะยกตัวอย่างการใช้ Cucumber ร่วมกับ Maven, Eclipse, Seleninum

เมื่อเราใช้ Cucumber อ่าน Feature File เราจะได้ Output ออกมาเป็น Code Snippet ซึ่งเป็นโครงร่างเพื่อนำไปเขียน Code ต่อดังรูปตัวอย่าง

รูปฝั่งซ้ายเป็น Feature File (userlogin.feature) ส่วนฝั่งขวาเป็น Code Snippet ในภาษา Java (LoginSteps.java) สำหรับนำไปเขียน code ทำ Automated Test ต่อ ให้สังเกตว่าใน Code จะมี Annotation @Given, @When, @Then ซึ่งจะสอดคล้องกับ Scenario ใน userlogin.feature

 

เมื่อเราได้ Code Snippet แล้ว เราสามารถใช้ Selenium Library for Java เพื่อสร้าง “Glue Code” สำหรับ Automated Test ต่อไปได้ โดยจะแบ่งเป็น Class Page Factory และ Class Test Step

Page Factory Class เป็น Class ที่เป็นตัวแทนของ Page (หน้าจอ) ที่เราต้องการทดสอบ เราจะประกาศตัวแปร Web Element ต่าง ๆ เท่าที่จำเป็นในการทดสอบ เช่น หน้าจอ Login ก็จะมี Web Element ได้แก่ name (Textbox), password (Textbox), login (Button) นอกจากนี้จะมีส่วนที่เป็น division สำหรับแสดงข้อความ error message อยู่ 2 ที่ ซึ่งไม่ได้กำหนด ID แต่ใช้ CSS Class ชื่อว่า invalid-feedback

 

สร้าง Class LoginPage_PF เป็น Page Factory โดยให้มีตัวแปร Web Element สอดคล้องกับหน้าจอ ดังนี้

 

สังเกตใน Class LoginPage_PF จะมีตัวแปร WebElement ผูกกับ ID ของ Object ต่าง ๆ บนหน้าจอ ด้วย Annotation @FindBy(id) นอกจากนี้เราสามารถสร้าง List ของ WebElement ได้ เช่น ค้นหา Object บนหน้าจอ ที่ใช้ CSS Class ชื่อว่า “invalid-feedback”

 

สำหรับ Constructor นั้น ให้รับ Parameter เป็น WebDriver เข้ามา ซึ่งจะทำให้เราสามารถผูก WebElement กับ Object บนหน้าจอได้

 

จากนั้นเราเขียน code selenium ที่สั่งให้ทำ Action ต่าง ๆ บนหน้าจอ เช่น การกรอก username ในช่อง name, การกรอก password ในช่อง password, การคลิกปุ่ม Login, การตรวจหาข้อความ “Password is invalid”

 

หลังจากที่ทำ Page Factor Class LoginPage_PF เสร็จแล้ว เราก็จะมาเขียน “Glue Code” ใน LoginSteps Class ต่อ ซึ่ง Class นี้จะเรียกใช้งาน LoginPage_PF และมี Method ต่าง ๆ สอดคล้องกับกับ Scenario ใน Feature File (userlogin.feature)

 

เราเริ่มจาก Code สำหรับ Initialize และ Finalize ก่อน

  • Method browserSetup() ใช้สำหรับ setup การทดสอบ โดยทั่วไปจะ create driver ของ browser ขึ้นมา (เช่น Chrome, Firefox, Edge ซึ่งในตัวอย่างนี้ใช้ Microsoft Edge) กำหนดค่า setting ทั่วไป (เช่น timeout)
  • Method teardown() ใช้สำหรับสิ้นสุดการทำงาน โดยทั่วไปจะ close driver และ quit driver

 

 

  • จาก Code ที่แสดง เราสามารถกำหนดให้บาง Method ทำงานก่อนที่จะเริ่ม execute test ได้ โดยใส่ Annotation @Before(order) ได้ พร้อมระบุ Order เป็นเลขลำดับ ในที่นี้เราใส่ @Before ให้กับ method browserSetup ()
  • ในทางกลับกัน เราสามารถกำหนดให้บาง Method ทำงานหลังการ execute test ได้เช่นกัน โดยใส่ Annotation @After(order) ในที่นี้เราใส่ @After ให้กับ method teardown()

 

จากนั้นเราเขียน code ส่วนที่เหลือ คือ Test Step ต่าง ๆ ตาม Scenario ซึ่งจะไปเรียกใช้ Method ต่าง ๆ ที่เราสร้างไว้ใน LoginPage_PF

  • user_enters_valid_username_and_password() : การกรอก username และ Password
  • clicks_on_login_button() : การกดปุ่ม Login

 

 

สุดท้ายคือ Code สำหรับตรวจสอบผลลัพธ์ ซึ่งในที่นี้จะตรวจสอบว่าหน้าจอที่แสดงเป็นหน้าจอ Home Page หรือไม่โดยค้นหา Object ปุ่ม Logout ถ้าค้นหาพบ แสดงว่าหน้าจออยู่ที่ Home Page แล้ว

 

สังเกตว่าจะเรียกใช้ Page Factory อีก Class หนึ่งคือ HomePage_PF ซึ่งมี Web Element ที่เราสนใจคือปุ่ม Logout

 

สุดท้ายเมื่อ Build แล้ว เราสามารถ Run Automated Test ได้ผ่าน Eclipse หรือ Command Line ก็ได้

รูปต่อไปนี้แสดงการใช้ Command Line “mvn test”

 

โปรแกรมก็จะเปิด Browser ขึ้นมา และทำ Action ต่าง ๆ ที่เราเขียน Scenario ไว้ โดยอัตโนมัติ จะสังเกตว่าแต่ละการทดสอบของ Scenario จะแสดง Scenario Step (Gherkin) คู่กับ Glue Code ที่ทำงาน โดยแสดง Package Name, Class Name, Method Name เช่น

  • Step “Given user is on login page” มี Glue Code ที่คู่กันคือ LoginStep.user_is_on_login_page

ซึ่งสิ่งนี้เองที่ทำให้เห็นภาพชัดเจนขึ้นว่า การใช้ Gherkin-Cucumber จะช่วยจัดระเบียบ ให้ทำความความเข้าใจและเชื่อมโยงระหว่าง Scenario และ Test ได้ดีขึ้น นอกจากนี้ หากอนาคตมีการเปลี่ยนรายละเอียดของ Step ก็จะทราบส่วนที่ต้องแก้ไข Code Automated Test ได้เร็วขึ้นด้วย

 

ในตอนท้าย โปรแกรมจะแสดงสรุปผลการ Test ว่าผ่านหรือไม่ผ่านกี่ Scenario

 

หากเราต้องการทดสอบบาง Scenario เราสามารถระบุ Cucumber option ตอนที่ Run maven test ได้ ในที่นี้ขอยกตัวอย่างง่าย ๆ ดังต่อไปนี้

  • กรณีต้องการทดสอบ scenario ที่มี tag ชื่อที่เราต้องการ เช่น

    • ต้องการทดสอบ scenario tag positive

mvn test -Dcucumber.options=”–tags @positive”


    • ต้องการทดสอบ scenario tag smoke

mvn test -Dcucumber.options=”–tags @smoke”


 

  • กรณีที่ Project มีหลาย Feature File เราสามารถเจาะจง Feature File ที่ต้องการทดสอบได้

    • การเจาะจงทดสอบเพียง Feature File ที่เราต้องการ ให้ระบุ Relative path ของ Feature file นั้น

mvn test -Dcucumber.options=”src/test/resources/features/userlogin.feature”


    • การเจาะจงทดสอบเพียง Feature File ใน Directory ที่เราต้องการ ให้ระบุ Relative path ของ Directory นั้น

mvn test -Dcucumber.options=”src/test/resources/features”


 

สำหรับบทความนี้ก็ขอจบเท่านี้ครับ หากสนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะครับ

เรียบเรียงโดย Siripod Surabotsophon

Reference

  • Selenium Cucumber Java BDD Framework

https://youtu.be/4e9vhX7ZuCw

  • Source Code ในบทความนี้ สามารถ Download ได้จาก GitHub

https://github.com/siripods/SeleniumCucumberBDD

 

0 0 Continue Reading →

Global-Active Device ปกป้องข้อมูลระดับองค์กร ลดทอนข้อจำกัดด้าน Data Recovery

เมื่อก่อนการทำ Data Recovery จะต้องคอยกังวลเรื่องการประเมินข้อมูลใหม่ หรือข้อมูลที่เปลี่ยนแปลงจะสูญหายไปมากเพียงใด เนื่องจากยังไม่ได้สำรองข้อมูล (Recovery Point Objective: RPO) ไหนจะเรื่องระยะเวลาที่ใช้ในการดำเนินการทำงานต่อ (Recovery Time Objective: RTO) แต่ในตอนนี้ ข้อจำกัดเหล่านั้นจะหมดไป

ด้วยเทคโนโลยีใหม่จาก Hitachi Vantara ซึ่งสามารถทำให้ RPO และ RTO เป็นศูนย์ เพราะคุณสมบัติ Global-Active Device (GAD) ที่มากับอุปกรณ์จัดเก็บข้อมูลตระกูล G F E และ 5000 Series ซึ่งอยู่ภายใต้ Product-Line Family ที่เรียกว่า Virtual Storage Platform (VSP) แล้ว Global-Active Device (GAD) คืออะไร

Global-Active Device (GAD) เป็นอีกหนึ่งความสามารถของอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ที่สามารถสร้างเครื่องจัดเก็บข้อมูลเสมือน (Virtualize Storage Machine) ขึ้นมา โดยที่เครื่องจัดเก็บข้อมูลเสมือนจะทำการจำลองอาร์เรย์ (Array) สำหรับจัดเก็บข้อมูลของอุปกรณ์จัดเก็บข้อมูล VSP สองชุดแยกออกจากกัน และทำให้ปรากฏเป็นอาร์เรย์หน่วยเก็บข้อมูลเดียวสำหรับเซิร์ฟเวอร์โฮสต์เดี่ยว (Host Server) หรือคลัสเตอร์ของเซิร์ฟเวอร์โฮสต์ (Cluster of Host Servers)

นอกจากนี้ GAD ยังมีความสามารถทำให้ระบบจัดเก็บข้อมูลหลัก (Primary Storage) และระบบจัดเก็บข้อมูลรอง (Secondary Storage) ใช้ข้อมูลจริงของระบบจัดเก็บข้อมูลหลักได้ และไดรฟ์ข้อมูลหลักและรองของอุปกรณ์ที่ใช้งานคุณสมบัติ Global-Active จะได้รับหมายเลข LDEV เสมือนเดียวกันในเครื่องจัดเก็บข้อมูลเสมือน สิ่งนี้ทำให้โฮสต์สามารถดู Volume คู่เป็น Volume เดียวบนระบบจัดเก็บข้อมูลเดียว และทั้งสอง Volume นั้นจะได้รับข้อมูลเดียวกันจาก Host

เมื่อการเขียนข้อมูลเสร็จสิ้นใน Volume ใดก็ตาม ข้อมูลจะถูกจำลอง (Replicate) ไปยัง Volume อีกคู่หนึ่งอย่างต่อเนื่องก่อนที่การเขียนจะเสร็จสิ้น ซึ่งช่วยให้ไดรฟ์ข้อมูล Sync กันตลอดเวลา และทำให้มั่นใจได้ว่า RPO และ RTO เป็นศูนย์ในกรณีที่ระบบจัดเก็บข้อมูลหรือไซต์ล้มเหลว

เครื่องจัดเก็บข้อมูลเสมือนสามารถขยายไปยังระบบจัดเก็บข้อมูลที่แยกจากกันด้วยระยะทางไกลสูงสุดถึง 500 กิโลเมตร และด้วยคุณสมบัติของ GAD  ทำให้เหมาะกับการทำงานที่ต้องการความ Non-disruptive, High Availability (HA), Disaster Recovery (DR) หรือการบริการย้ายศูนย์ข้อมูลอย่างรวดเร็ว นอกจากนี้การเคลื่อนย้ายของหน่วยเก็บข้อมูลเครื่องภายใต้สภาพแวดล้อมการจัดเก็บข้อมูลสำหรับการทำ Load-Balance หรือการบำรุงรักษาทั่วไปก็เป็นเรื่องที่ง่ายและไม่กระทบต่อตัวอุปกรณ์จัดเก็บข้อมูล

 

ข้อดีจากการมี Global-Active Device (GAD)

     Global-Active Device (GAD) ของ Hitachi Vantara เป็นผู้นำด้านการใช้งานในรูปแบบการทำงาน Active-Active ที่มาพร้อมกับ ความเรียบง่ายในการใช้งาน (Simplicity) ความสามารถในการขยาย (Scalability) และ ผลตอบแทนการลงทุน (Return on Investment (ROI)) ที่คุ้มค่าตอบโจทย์ทุกธุรกิจในยุคปัจจุบัน

     1. ความเรียบง่าย (Simplicity) เนื่องจาก GAD เป็นหนึ่งในความสามารถการจำลองเสมือนของอุปกรณ์จัดเก็บข้อมูลที่อยู่ภายใต้ระบบบริหารจัดการ Storage Virtualization Operating System RF (SVOS RF) ของ Hitachi จึงไม่จำเป็นต้องใช้อุปกรณ์เพิ่มเติมหรือซอฟต์แวร์เพิ่มเติมสำหรับเซิร์ฟเวอร์โฮสต์ (Host Server) หรือเครื่องเสมือน (Virtual Machine)

     2. ความสามารถในการขยาย (Scalability) Hitachi GAD ให้การประมวลผลข้อมูลแบบ Active-Active อย่างแท้จริงทั่วทั้งอาร์เรย์จัดเก็บข้อมูล ซึ่งขยายขอบเขตเกินกว่าการใช้งานในผลิตภัณฑ์ยี่ห้ออื่นๆ ที่มีเพียงอาร์เรย์จัดเก็บข้อมูลเดียวเท่านั้นที่ทำงานอยู่ ในขณะที่อีกอาร์เรย์หนึ่งใช้สำหรับสแตนด์บาย (Standby) และ Controller ในอาร์เรย์จัดเก็บข้อมูลบนอุปกรณ์จัดเก็บข้อมูลตระกูล VSP แต่ละอันยังมีคุณสมบัติ Active-Active ซึ่งทำให้เราขยายประสิทธิภาพได้ดีกว่า Controller ของผู้จำหน่ายรายอื่นที่เป็น Active/Passive หรือ ALUA (Asymmetric Logical Unit Access)

     3. ผลตอบแทนการลงทุน (Return on Investment: ROI) ด้วยคุณสมบัติของอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ที่มีความสามารถในการจำลองพื้นที่จัดเก็บข้อมูลภายนอกเสมือนและสร้างเครื่องจัดเก็บข้อมูลเสมือน จากการนำอุปกรณ์จัดเก็บข้อมูลตระกูล VSP ไปครอบอุปกรณ์จัดเก็บข้อมูลเดิมที่คุณมีอยู่

คุณจะสามารถจำลองพื้นที่จัดเก็บข้อมูลหลังอาร์เรย์ VSP และสร้างเครื่องจัดเก็บข้อมูลเสมือนได้ ทั้งนี้อุปกรณ์จัดเก็บข้อมูล VSP ในกรณีนี้ไม่ต้องการพื้นที่ความจุแต่อย่างใด เนื่องจากพื้นที่ความจุทั้งหมดสามารถมาจากอุปกรณ์จัดเก็บข้อมูลของบุคคลที่สามหรือของเดิมที่มีอยู่ (Third Party Storage System) อุปกรณ์จัดเก็บข้อมูล VSP ทั้งหมด ตั้งแต่ระดับกลางไป (Mid-Range) จนถึงระดับไฮเอนด์ (High-End Enterprise) มาพร้อมคุณสมบัติ GAD ดังนั้นคุณไม่จำเป็นเสียค่าใช้จ่ายกับการต้องมีโซลูชันหรือเครื่องมือบริหารจัดการเพิ่มเติม และไม่จำเป็นต้องใช้อุปกรณ์หรือซอฟต์แวร์โฮสต์เพิ่มเติมเพื่อรองรับ GAD

 

Scenario ที่น่าสนใจกับการใช้งาน GAD บนอุปกรณ์จัดเก็บข้อมูลของ Hitachi Vantara

  1. Fault-tolerant storage infrastructure

กรณีเกิด Site ล้มเหลวทำให้ Server ไม่สามารถเข้าถึง Volume ที่อยู่ใน GAD Pair การอ่านและเขียน I/O ยังคงสามารถดำเนินการต่อไปใน Pair Volume ที่อยู่ในระบบจัดเก็บข้อมูลอื่นอีก Site นึง ทำให้เกิด I/O ของ Server อย่างต่อเนื่องกับ Volume ข้อมูล

 

  1. Failover clustering without storage impact

กรณีที่ Server Cluster มีการใช้ GAD อยู่ การ Failover และ Failback จะเป็นหน้าที่ของ Software Cluster โดยที่ อุปกรณ์จัดเก็บข้อมูลที่อยู่ใน GAD Pair ไม่ต้องทำการระงับการใช้งานหรือต้อง Sync การทำงานกันใหม่

 

  1. Server load balancing without storage impact

 

เมื่อมีการโหลด I/O บนเครื่องจัดเก็บข้อมูลเสมือนที่ไซต์หลักเยอะมากๆ การใช้งาน GAD จะช่วยให้สามารถโยกย้ายเครื่องเสมือน (Virtual Machine (VM)) ไปยังเซิร์ฟเวอร์ที่จับคู่โดยไม่ต้องดำเนินการใด ๆ บนระบบจัดเก็บข้อมูล ดังที่แสดงในตัวอย่างรูปด้านขวา เครื่องเสมือน VM3 จากเซิร์ฟเวอร์ไซต์หลักจะถูกย้ายไปยังเซิร์ฟเวอร์ไซต์รอง เนื่องจาก Volume ข้อมูลหลักและรองของ GAD มีข้อมูลเดียวกัน จึงไม่จำเป็นต้องย้ายข้อมูลใดๆ ระหว่างอุปกรณ์จัดเก็บข้อมูล

สำหรับผู้ที่สนใจดูตัวอย่างการทำ GAD ของจริง จากอุปกรณ์จัดเก็บข้อมูลของ Hitachi Vantara สามารถติดต่อสตรีมฯ ได้ครับ

พิเศษสุด สำหรับผู้ติดต่อเข้ามา 5 รายแรก รับการปรึกษาและประเมินการใช้งานระบบของท่านจากทีมงานผู้เชี่ยวชาญของ Stream และ Hitachi Vantara มูลค่า 50,000 บาท ฟรีทันที

สอบถามข้อมูลติดต่อ

 

เขียนและเรียบเรียงโดย Wanit Treeranurat

0 0 Continue Reading →

รับส่งข้อมูลลื่นไหล ไปกับ DWDM โซลูชั่น Active-Active Data Center

ปัจจุบันการใช้งานข้อมูลอย่างต่อเนื่องนั้นสำคัญอย่างมาก จึงเกิดการ backup ไปยัง Data center สำรอง (DR) เพราะหากเกิดเหตุการณ์ไม่คาดฝันกับ Data center หลัก (HQ) ก็จะยังสามารถเรียกใช้ข้อมูลที่ได้ทำการ backup ไว้ที่ DR

การใช้งานในรูปดังกล่าวเรียกว่า Active – stand by data center ซึ่งจะต้องใช้เวลาในการเรียกคืนข้อมูลจาก DR เพื่อมาใช้ ซึ่ง DR จะมีหน้าที่เพียงสำรองข้อมูล และใช้งานก็ต่อเมื่อเกิดเหตุไม่คาดฝันที่ HQ

จะดีกว่าไหม หากเรานำข้อมูลที่ได้ทำการ backup ไว้ จาก DR มาใช้งานอย่างอื่นด้วย เช่น ใช้สำหรับการทดสอบด้วยข้อมูลที่เป็นปัจจุบัน หรือ สามารถใช้งานได้ทันทีโดยไม่ต้องรอการ restore เมื่อเกิดเหตุการณ์ไม่คาดฝันที่ DR

การใช้งาน Data center ในรูปแบบนี้เรียกว่า Active – active data center ซึ่งการทำ Active – active data center นั้นต้องจัดเตรียมอุปกรณ์ต่าง ๆ ให้พร้อมสำหรับการใช้งานไม่ว่าจะเป็น Server, Storage, อุปกรณ์ Network ต่าง ๆ และอื่น ๆ ที่ต้องมีฟีเจอร์รองรับการทำ Active-active data center รวมถึง Database ก็ต้องรองกับฟีเจอร์ดังกล่าวด้วยหากต้องการใช้งาน

ลองนึกภาพหากเราต้องการส่งข้อมูลขนาด 1TB ไปยัง DR จะต้องใช้ความเร็วเท่าไร ถ้าใช้อินเตอร์เน็ตทั่วไป DWDM สามารถส่งข้อมูลได้กว่า 100Gbps หรือจะใช้เวลาประมาณ 10 วินาทีเท่านั้น

 

 

DWDM คืออะไร?

DWDM ย่อมาจาก Dense Wavelength Division Multiplexing เป็นอุปกรณ์ transmission ทำหน้าที่รับ-ส่งข้อมูลระหว่าง Data center ตั้งแต่ 2 ที่เข้าด้วยกัน โดยใช้สายใยแก้วนำแสงหรือ Fiber optic เป็นสื่อกลางทำให้ Data center ที่อยู่ห่างกันนั้น เสมือนวางอยู่ข้างกัน ทำให้การส่งข้อมูลไปได้ไกลขึ้น เร็วขึ้น เสถียรขึ้น และปลอดภัยมากขึ้น

 

ทำงานอย่างไร?

การทำงานของ DWDM คือ จะแปลงสัญญาณแสงจากอุปกรณ์ต้นทางให้เป็นสัญญาณอิเล็กทรอนิกส์ เพื่อต่อมายัง DWDM

แล้ว DWDM จะทำการแปลงสัญญาณอิเล็กทรอนิกส์ดังกล่าว ให้เป็นสัญญาณแสงในความยาวคลื่น (λ) ที่ตั้งค่าไว้เพื่อส่งผ่านข้อมูลไปยังสายใยแก้วนำแสง (Fiber optic) ไปยังปลายทาง ซึ่งแต่ละความยาวคลื่นก็จะสามารถรับ-ส่งข้อมูลได้แบบ Unlimited โดยขึ้นอยู่กับชนิดของตัวรับและส่งสัญญาณ DWDM ซึ่งปัจจุบันมี Bandwidth สูงสุดอยู่ 100G 1 ความยาวคลื่น

 

 

ตัว DWDM นั้นสามารถส่งข้อมูลได้ไกลกว่า 1,000 km โดยมีค่าความหน่วง (Latency) น้อยกว่า 5ms โดยใช้ Core จาก Fiber optic เพียง 2 cores เท่านั้น และซึ่งหากต้องการเพิ่ม Speed หรือ Bandwidth ก็สามารถทำได้ง่าย เพียงเพิ่ม Card หรือ Transceiver ตาม Speed หรือ Bandwidth โดยไม่ต้องเพิ่ม Core จาก Fiber optic

ที่ขาดไม่ได้คือ เรื่องความปลอดภัย DWDM นั้นสามารถทำ Encryption เพื่อเพิ่มความปลอดภัยให้กับข้อมูลได้ โดยไม่ทำให้ Performance ลดลง และ DWDM ยังสามารถทำ Protection ในตัวเองเพื่อไม่ให้มี Single point of failure เพื่อเพิ่มความเสถียรของข้อมูลได้มากขึ้นอีกด้วย

 

ภาพประกอบจาก http://th.fibresplitter.com/news/introduction-to-the-components-used-in-dwdm-sy-24306019.html

 

แล้วทำไมต้องเป็นสตรีม ไอ.ที. คอนซัลติ้ง ?

สตรีมฯ เป็นที่ปรึกษาด้านโซลูชั่นดิจิทัลให้กับองค์กรชั้นนำมากว่า 20 ปี โดยให้บริการทั้ง Infrastructure, Network, Security รวมไปถึง Software Application ด้วย

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

หากสนใจโซลูชั่นนี้ คุณสามารถติดต่อมายังบริษัท สตรีม ไอ.ที. คอนซัลติ้ง เพื่อขอรายละเอียดเพิ่มเติมหรือทดลองใช้งานได้เลย ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233

 

เรียบเรียงโดย Pichet Chimtuam
Solutions Engineer, Stream I.T. Consulting Ltd.

0 1 Continue Reading →

มาทำความรู้จักกับ Figma ตัวช่วยในการ design UI ให้ง่ายขึ้น

วันนี้ทาง Stream อยากจะมาแนะนำ software ที่ชื่อว่า “Figma” ซึ่งใช้สำหรับการทำ mockup หน้าจอ ไว้นำเสนอลูกค้า และยังสามารถใช้สร้าง flow การทำงานของ program ได้อีกด้วย พร้อมแล้วมาเริ่มกันเลยค่ะ

เริ่มจากเข้า Link สำหรับการใช้งาน Figma ที่ https://www.figma.com/

เมื่อเข้า link มาแล้วจะเจอหน้าตา pop-up แบบรูปด้านล่างนี้

ข้อดีของ Figma คือสามารถสร้างทีม ให้คนในทีมเข้ามาดูหรือแก้ไขงานของเราได้ด้วย ทำให้เราสามารถทำงานไปพร้อมกับเพื่อนในทีมได้เลย ไม่ต้องรอส่งไฟล์กันไปมา แต่ถ้าหากใครทำคนเดียวก็สามารถข้ามขั้นตอนนี้ไปก่อนได้นะคะ

เมื่อเราสร้างทีมเสร็จแล้ว จะมี pop-up ขึ้นมาให้เราเลือก plan ได้ ว่าจะเป็นแบบ Starter (Free) หรือแบบ Professional ($12/month) แต่ใน blog นี้ เราจะแนะนำเป็นตัว Starter ก่อนนะคะ แต่ถ้าหากใครใช้แล้วชอบก็สามารถ upgrade เป็น Professional plan ได้ค่ะ

เมื่อเลือก starter plan แล้ว จะมีให้เลือก 2 แบบ

1.Design with Figma: เหมาะสำหรับ เป็นการออกแบบ prototype ต่าง ๆ ซึ่งจะมี frame ให้เลือกเยอะมาก เช่น Website, iPhone, iPad สะดวกมาก ๆ สำหรับคนที่ต้อง design หน้าจอให้ลูกค้า review ก่อนเริ่มทำงานจริง หรือส่งให้ developer coding ต่อก็ได้เหมือนกัน

2.Whiteboard with Figjam: เหมาะสำหรับการทำ diagram ต่างๆ แต่ใน blog นี้จะยังไม่พูดถึงส่วนนี้นะคะ

Design with Figma

เมื่อเลือก Design with Figma จะมีรูปแบบ template ขึ้นมาให้เลือกหลายรูปแบบเลย เหมาะสำหรับการ design หน้าจอไว้นำเสนอลูกค้า ซึ่งเราสามารถเลือกขนาดหน้าจอตาม requirement ของลูกค้าได้เลย หรือจะ custom เองก็ได้ นอกจากนี้ Figma ยังมี community ไว้ share ผลงานของแต่ละ user ด้วย ในส่วนนี้หากเราเข้าไปดูแล้วสนใจงานส่วนไหน ก็สามารถ download มาใช้ได้เช่นกันค่ะ

ในตัวอย่างนี้จะ เลือก template เป็น Desktop เมื่อเลือกแล้วก็จะได้หน้าจอเป็นขนาด desktop ตามที่ต้องการเหมือนรูปด้านล่างค่ะ

ในส่วนของเมนูด้านขวา จะมี 3 ส่วนด้วยกัน คือ Design, Prototype และ Inspect

 

Design : ภายใต้เมนู Design จะมีให้ แก้ไข ตำแหน่ง, ขนาด, ขอบ, มุม, สี

 

Prototype

สำหรับหน้า Prototype เราสามารถสร้าง interaction ระหว่างแต่ละหน้าได้

ในตัวอย่างนี้ จะสร้าง link สำหรับปุ่มสีชมพูใน desktop-1 ให้ link ไปที่ desktop-2 เมื่อมีการคลิก

ให้กดปุ่ม + ในหัวข้อ interactions จะมี pop-up ขึ้นมาให้ใส่รายละเอียดตามรูปภาพด้านล่าง

ตัวอย่างนี้ จะตั้งค่าให้ มีการ interact เมื่อคลิก (On click) และตั้งค่า Navigate to ไปที่ Desktop-2

เมื่อตั้งค่าเสร็จแล้ว แล้วเข้า preview mode เมื่อกดปุ่มที่เราตั้งค่าไป จะ link ไปที่ desktop-2 เลย

 

Inspect

ส่วนนี้จะเอาไว้สำหรับแก้ไข object ด้วย code CSS

เมื่อกดแล้วจะขึ้น pop-up ให้ใส่ email สำหรับคนที่เราจะ share ให้ หรือจะ copy link แล้วนำไปส่งให้โดยตรงก็ได้ ผู้ที่เข้ามาดูจะสามารถกดปุ่มทุกอย่างที่เราทำ interaction ไว้ได้ แต่จะไม่สามารถแก้ไขได้

นี่ก็เป็นตัวอย่างการใช้ Figma คร่าว ๆ นะคะ

พบกับเรื่องราวด้านดิจิทัลจากเพื่อน ๆ ชาวสตรีมฯ ได้ใน Blog หน้าค่ะ

หากสนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะคะ

 

เรียบเรียงโดย Thayanee Lertassavarat

Business Analyst, Stream I.T. Consulting Ltd.

0 0 Continue Reading →

เข้าใจ Windows Server License ง่ายนิดเดียว…

สวัสดีครับคุณผู้อ่านสายไอที ทุก ๆ ท่าน ผมเชื่อว่าหลาย ๆ ท่านคงเคยสับสนกับการคิด Licensed ของ Windows Server มาไม่มากก็น้อย ซึ่งแน่นอนว่าส่วนใหญ่คงจะให้ Partner หรือ Vendor ช่วยในการคิดและคำนวณ Licenses ที่ถูกต้อง

อย่างไรก็ตาม เชื่อว่าหลาย ๆ ท่านที่เข้ามาอ่านในวันนี้อยากจะเข้าใจมันจริง ๆ ใช่ไหมครับ เรื่องนี้ถือเป็นเรื่องที่จำเป็นสำหรับ IT Manager หรือ Purchasing Manager ครับ วันนี้จึงจะขอมาอัพเดทประเภทของ License และวิธีการคิด Licensed ของ Windows Server พร้อมยกตัวอย่างการใช้งานบน VMware ให้ทุกท่านเห็นภาพง่าย ๆ กันครับ

 

วิธีการคิด Licensed Microsoft Window Server Standard 2016/2019

1. ก่อนอื่นเรามารู้จัก SKUs การคิด Licenses ของ Microsoft Windows Server กันก่อนครับ ซึ่งจะมีทั้งหมดแค่สองแบบเท่านั้น ฟังไม่ผิดครับ มี 2 แบบจริงๆ คือแบบ 2 Core-Packs และแบบ 16 Core-Packs

 

2. Physical Server หรือ ESXi Host 1 เครื่องจะต้องซื้อขั้นต่ำ 16 Core Licensed หรือ 1 Processor (CPU) ต้องมีอย่างน้อย 8 Core Licensed (ถ้าเครื่องมี 1 CPU 8 Core ก็ต้องซื้อขั้นต่ำ 16 Core License)

 

3. ถ้าจำนวน Core ทั้ง 2 CPU รวมกันเกิน 16 Core ก็ต้องซื้อเพิ่มให้ครบเท่ากับจำนวน Core รวมทั้งหมด เช่น ถ้ามี 2 CPU และมี CPU ละ 10 Core จะต้องซื้อทั้งหมด 20 Core Licensed

 

4. ถ้ามี 3 หรือ 4 CPU ละ คิดยังไง CPU ที่เพิ่มขึ้นมาจะคิดเหมือนกับข้อ 1 ครับ คือ 1 Processor(CPU) ต้องมีอย่างน้อย 8 Core Licensed เช่น ถ้ามี 4 CPU และมี CPU ละ 4 Core จะต้องซื้อทั้งหมด 32 License (จะซื้อ 16 License ไม่ได้เพราะ ขั้นต่ำต่อ 1 CPU คือ 8 Core Licensed ครับ) แต่ถ้ามี CPU ละ 10 Core ก็ต้องซื้อให้ครอบคุลมทั้งหมด คือ 40 Core Licensed ครับ

 

5. ยกตัวอย่างเพิ่มเติม

a. มี 1 CPU 8 Core ต้องซื้อ 16 Core Licensed (ใช้ 16 Core-Packs 1 License จบ!!)

b. มี 1 CPU 20 Core ต้องซื้อ 20 Core Licensed (ใช้ 16 Core-Packs x 1 License + 2 Core-Packs x 2 License หรือ จะใช้ 2 Core-Packs 10 License ก็ได้ไม่ว่ากันครับ แต่แนะนำ แบบ 2-Core-Packs จะง่ายสุดเพราะแค่ หาร 2 !!!)

c. มี 2 CPU 4+4 Core ต้องซื้อ 16 Core Licensed (ใช้ 16 Core-Packs 1 License จบ!!)

d. มี 2 CPU 20+20 Core ต้องซื้อ 40 Core Licensed  (ใช้ 2 Core-Packs 20 License จบ!!)

e. มี 4 CPU 4+4+4+4 Core ต้องซื้อ 32 Core Licensed (ใช้ 2 Core-Packs 16 License จบ!!)

f. มี 4 CPU 20+20+20+20 Core ต้องซื้อ 80 Core Licensed  (ใช้ 2Core-Packs 40 License จบ!!)

 

แบบ Core Licensed ผ่านไปแล้วไม่ยากใช่ไหมหละครับ..ที่นี้มาถึงจุดที่ทุกคนบ่นเป็นเสียงเดียวกันว่าปวดหัว หรือ บอกว่าเขี้ยวจริงๆ ก็คือ การคิด Virtual Machine (VM) ที่จะใช้งาน

1. จากวิธีการคิด Core Licensed ข้างบน เมื่อคิดครบถ้วนถูกต้องแล้ว ขอย้ำว่าครบถ้วนและถูกต้องแล้วนะครับ คุณจะมีสิทธิใช้ Virtual Machine (VM) ได้สุงสุด 2 VM ต่อ 1 Physical Server ที่คุณคิด Licensed เท่านั้น

 

2. ถ้าต้องการใช้มากกว่า 2 VM และมี ESXi Cluster ละจะคิดยังไง ??? เพื่อให้เห็นภาพขอยกตัวอย่างดังนี้ครับ

จากรูป มี ESXi Cluster ทั้งหมด 3 Hosts แต่ละ Hosts มี CPU ละ 8 Core 2 CPU และมี VMs แต่ละเครื่อง 4 VMs

วิธีการคิด License ที่ถูกต้องเราจะไม่คิดแยกตามจำวน VMs แต่ละเครื่อง เพราะว่า… หากมีการทำ Cluster จะเกิดกรณีการทำ vMotion หรือ DRS ข้ามไปมาระหว่าง Hosts ได้ กล่าวคือการคิดแค่จำนวน VMs บน Hosts เดียวนั้นจะไม่ครอบคลุมถึงการทำ vMotion หรือ DRS ได้

เพราะฉะนั้น !!! จับเอา VM ทั้งหมดมารวมกันแล้วให้คิด License ตามจำนวนสุงสุดที่ได้ ยกตัวอย่างจากรูปข้างบนนะครับ

นำเอา VM แต่ละ ESXi มารวมกัน จะได้ 4+4+4 = 12 VMs ดังนั้นจะต้องซื้อ 96 Core Licensed ต่อ 1 ESXi ผมมีสูตรวิธีการคิดง่ายๆครับ “เอาจำนวน VM รวมทั้งหมด หาร 2 และคูณด้วยจำนวณ Core Licensed ที่ต้องใช้ครับ เช่น (12/2)*16 = 96 Core Licensed ต่อ 1 ESXi (16 มาจาก จำนวน Core Licensed ต่อ 2 VMs ครับ) ถ้ามี 3 ESXi ก็เอา 96 *3 อีกทีครับ จะได้จำนวน Core Licensed ที่ต้องซื้อทั้งหมด

 

3. ลองมาดูอีกตัวอย่างกันครับ

จากรูป มี ESXi Cluster ทั้งหมด 3 Hosts แต่ละ Hosts มี CPU ละ 8 Core 2 CPU และมี VMs แต่ละเครื่อง 4 VMs

  • เรามาลองคิดจาก 2 VMs ก่อนนะครับว่าต้องใช้ กี่ Core Licensed ในกรณีนี้จะได้ 32 Core Licensed นะครับ
  • เอาจำนวน VMs ทั้งหมดมารวมกันจะได้ 12 VMs

ถัดมาเอาเข้าสูตรเลยครับ (12/2)*32 *จำนวน ESXi  =  576 Core Licensed ครับ

 

วิธีการคิด Licensed Microsoft Window Server Datacenter 2016/2019

หลัการคิด Licensed ของ Datacenter Edition นั้นง่ายมากครับ กล่าวคือ ไม่ต้องสนใจ จำนวน VMs เพราะใช้ได้ Unlimited ครับ ดังนั้นนับแค่จำนวน Core Licensed ที่ต้องใช้ทั้งหมดเท่านั้นครับ ขอยกตัวอย่างเพื่อให้เข้าใจนะครับ

เอาจากภาพนี้เลยนะครับ จากภาพนี้นับ Core รวมได้ทั้งหมด 32+32+32 = 96 Core Licensed ดังนั้นซื้อแค่ 96 Core Licensed โดยที่ใช้ VM ได้ไม่จำกัดและสามารถ vMotion หรือ DRS ไปมาได้สบาย ๆ เพราะไม่ติดที่ข้อจำกัดเรื่อง VMs ต่อเครื่องแล้ว

 

มาถึงตรงนี้คงสงสัยแล้วใช่ไหมว่าแล้วต้องซื้อแบบไหนหล่ะ ? ถึงจะคุ้มค่าที่สุด !!

จุดคุ้มทุนสำหรับการซื้อ Microsoft Windows Server คือ 14 VMs กล่าวคือในกรณีที่คุณมี Server มากกว่า 1 เครื่อง และ คุณมีจำนวน VMs ใน Data Center คุณมากกว่าหรือเท่ากับ 14 VMs ให้ซื้อ Datacenter Edition จะคุ้มค่าที่สุด

 

ในบทความต่อไปจะมาพูดถึง CALs และ Software Assurance (SA) สำหรับ Microsoft Windows Server ต่อครับ

 

สนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 ครับ

 

เรียบเรียงโดย Sukrit Phiboon
Solution Management, Stream I.T. Consulting Ltd.
0 1 Continue Reading →

Rabbit MQ ตอนที่ 2 – Exchanges, Routing Keys, and Bindings

สวัสดีครับ ในตอนที่แล้ว เราได้แนะนำ Rabbit MQ กันไปแล้ว สำหรับตอนที่ 2 นี้ เราจะเจาะลึกให้ละเอียดขึ้นอีกว่า องค์ประกอบของ Rabbit MQ มีอะไรบ้าง

Rabbit MQ มีองค์ประกอบอย่างไร

ภาพจาก: Introduction to RabbitMQ, Randhir Kumar, Software Consultant, Knoldus Inc.

 

องค์ประกอบของ Rabbit MQ มีดังนี้

  • Producer : โปรแกรมที่เป็นผู้ส่ง Message (Publish Message) โดยที่ Message อาจจะเป็นงานที่ต้องการส่งให้ระบบอื่นไปทำ หรืออาจเป็นการแจ้งข้อมูลข่าวสารให้ระบบอื่น ๆ รับทราบ
  • Exchange : ทำหน้าที่รับ Message และนำส่ง Message ไปให้ Queue ต่าง ๆ โดยพิจารณาจาก Routing Key ซึ่งเป็น Attribute ในแต่ละ Message
  • Binding : คือ การกำหนด “Link”  ว่า Queue ต่าง ๆ จะรับ Message ใดจาก Exchange โดย Binding จะเกี่ยวข้องกับ Routing Key และ Header
  • Queue : ทำหน้าที่คล้ายตู้จดหมาย (Post Box) ซึ่งอยู่ภายใน Rabbit MQ  เป็นที่เก็บ Message ทุกอย่างที่ผ่าน Rabbit MQ เข้ามาและออกไปยัง application โดยอาศัย Memory และ Disk ของเครื่อง Host ทำหน้าที่เป็น Buffer สำหรับเก็บ Message ดังนั้นปริมาณ Message ที่เก็บได้ ก็จะขึ้นกับขนาดของ Memory และ Disk ที่มี ในการใช้งาน Queue นั้น สามารถให้หลาย ๆ Producer ส่ง Message เข้าไปที่ Queue เดียวกันได้ และสามารถให้หลาย ๆ Consumer รับ Message จาก Queue เดียวกันได้เช่นกัน
  • Consumer : โปรแกรมที่เป็นผู้รอรับ Message (Consume Message) โดยอาจจะเป็นระบบที่รับงานจาก Producer มาดำเนินการ หรือรับข้อมูลข่าวสารมาอัพเดตในระบบ หรือส่งต่อให้ระบบอื่น

 

ประเภทของ Exchange

Rabbit MQ รองรับ Exchange ได้หลายประเภท เช่น Direct, Fanout, Topic, Header เป็นต้น แต่ละประเภทจะมีวิธีต่างกันในการกำหนด Binding เพื่อเชื่อมโยงกับ Queue

ภาพจาก: https://www.cloudamqp.com/blog/part1-rabbitmq-best-practice.html

 

1. Direct Exchange

Direct Exchange จะส่ง Message โดยอาศัย Routing Key เป็นตัวกำหนดว่า Message จะถูกส่งอย่างเจาะจงไปยัง Queue ที่มี Binding Key ตรงกับ Routing Key เท่านั้น

ตัวอย่างเช่น ระบบงานเพื่อประมวลผล pdf_events ประกอบด้วย Direct Exchange 1 ตัว และ Queue 2 ตัว

  • Queue A สำหรับทำงาน pdf create และมี routing key คือ pdf_create
  • Queue B สำหรับทำงาน pdf log และมี routing key คือ pdf_log

การทำงานเริ่มจาก Exchange ได้รับ Message จาก Producer เข้ามา Exchange จะตรวจสอบ Binding key ที่แนบมากับ Message ถ้า Routing key เป็น pdf_create ก็จะส่ง Message ไปยัง Queue A (เนื่องจากมี Binding key = pdf_create ตรงกัน) หรือถ้า Routing key เป็น pdf_log ก็จะส่งไปยัง Queue B (เนื่องจากมี Binding key = pdf_log ตรงกัน)

 

ภาพจาก: https://www.cloudamqp.com/blog/part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html

 

2. Fanout Exchange

Fanout Exchange ทำการส่ง Message ไปยังทุก Queue ที่ผูกกับ Exchange นั้น โดยไม่สนใจ Routing Key วิธีการนี้เหมาะสำหรับงานลักษณะ Broadcasting

ภาพจาก: https://www.cloudamqp.com/blog/part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html

 

ตัวอย่างการใช้งาน #1

เมื่อระบบประมวลผลข่าวกีฬา (Sports News)  ได้บันทึกข้อมูลข่าวกีฬาใหม่แล้ว ทำการ Publish Message นี้ (ซึ่งมีรายละเอียดของข่าว) ลงใน Fanout Exchange  จากนั้น Fanout Exchange ทำการ Broadcast ไปยังระบบช่องทางการรายงานข่าวต่างๆ เช่น ช่องทาง Web, Mobile, TV, Radio ซึ่งแต่ละช่องทางสามารถมีวิธีการนำข้อมูลรายละเอียดของข่าวไปใช้งานแตกต่างกัน

ตัวอย่างการใช้งาน #2

เมื่อระบบงาน HR ได้บันทึกข้อมูลพนักงานใหม่แล้ว ทำการ Publish Message ลงใน Fanout Exchange ซึ่ง Messageประกอบด้วยข้อมูลของพนักงานใหม่ จากนั้น Fanout Exchange ทำการ Broadcast ไปยังระบบงานอื่นที่เกี่ยวข้อง เช่น ระบบการจองคอมพิวเตอร์ เพื่อจองเครื่องให้กับพนักงานใหม่, ระบบการพิมพ์นามบัตร เพื่อจัดพิมพ์นามบัตรให้กับพนักงานใหม่, ระบบการฝึกอบรม เพื่อจองวันปฐมนิเทศพนักงานใหม่ เป็นต้น ระบบงานเหล่านี้สามารถรับ Message ไปประมวลผลได้ทันที นอกจากนี้ระบบงาน HR ซึ่งเป็น Publisher ก็ทำงานแบบ Asynchronous คือสามารถทำงานอื่นของตนเองต่อได้ โดยไม่ต้องรอผลลัพธ์จากระบบงานอื่นๆ กลับมาก่อน

 

3. Topic Exchange

Topic Exchange เหมาะสำหรับงานลักษณะ Multicast เพื่อส่ง Message ให้กับ Consumer บางส่วน โดยอาศัยการ Match Pattern ของ Routing Key กับ Binding Key โดย Routing Key มีลักษณะเป็นคำคั่นด้วยจุด เช่น agreements.eu.stockholm

ภาพจาก: https://www.cloudamqp.com/blog/part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html

 

ตัวอย่างเช่น ระบบงานสำหรับประมวลผล agreements  ใช้ Topic Exchange และ Queue 3 ตัว ดังนี้

Queue A สำหรับรับ Message ที่เกี่ยวกับ agreement ของ berlin เท่านั้นและกำหนด routing key = agreements.eu.berlin.#
Queue B สำหรับรับ Message เกี่ยวกับ agreement ทุกอย่าง routing key = agreements. #
Queue C สำหรับรับ Message เกี่ยวกับ agreement ของ headstore routing key = agreements.*.headstore

หมายเหตุ:

  • เครื่องหมาย * หมายถึงตำแหน่งนี้ต้องมีคำปรากฏ 1 คำ
    • เช่น binding key = “agreements.*.*.b.*” หมายถึง คำที่หนึ่งเป็น agreements, คำที่สี่เป็น b, ส่วนคำที่สอง สาม และห้า เป็นคำอะไรก็ได้แต่ต้องมี
  • เครื่องหมาย # หมายถึงตำแหน่งนี้จะมีคำใดๆปรากฏหรือไม่มีเลยก็ได้
    • เช่น binding key = “agreements.eu.berlin.#” หมายถึง คำที่หนึ่งเป็น agreements, คำที่สองเป็น eu, คำที่สามเป็น berlin, ส่วนคำที่สี่จะมีหรือไม่มีก็ได้

 

Example Scenario

 

Message #1 เข้ามา

ด้วย routing key = agreements.eu.

berlin.headstore

Message #1 จะถูกส่งไปยัง

Queue A เนื่องจาก 3 คำแรก (agreements, eu, berlin) ตรงกับ binding key

agreements.eu.berlin.headstore  VS  agreements.eu.berlin.#

 

Queue B เนื่องจากคำแรก (agreements) ตรงกับ binding key

agreements.eu.berlin.headstore  VS agreements.#

 

Queue C เนื่องจากคำที่หนึ่งและสี่ (agreements, headstore) ตรงกับ binding key

agreements.eu.berlin.headstore  VS agreements.*.headstore

 

Message #2 เข้ามา

ด้วย routing key = agreements.eu.

berlin.tailstore

Message #2 จะถูกส่งไปยัง Queue A, B

Queue A เนื่องจาก 3 คำแรก (agreements, eu, berlin) ตรงกับ binding key

agreements.eu.berlin.tailstore  VS  agreements.eu.berlin.#

 

Queue B เนื่องจากคำแรก (agreements) ตรงกับ binding key

agreements.eu.berlin.tailstore  VS agreements.#

 

Message #3 เข้ามา

ด้วย routing key = agreements.us.

headstore

Message #3 จะถูกส่งไปยัง Queue B, C

Queue B เนื่องจากคำแรก (agreements) ตรงกับ binding key

agreements.us.headstore  VS agreements.#

 

Queue C เนื่องจากคำที่หนึ่งและสี่ (agreements, headstore) ตรงกับ binding key

agreements.us.headstore  VS agreements.*.headstore

 

 

4. Header Exchange

Header Exchange อาศัยข้อมูลใน Header ในการกำหนดเส้นทางการส่ง Message โดยไม่ได้อาศัย Routing Key

ภาพจาก: https://www.cloudamqp.com/blog/part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html

 

ตัวอย่างเช่น ระบบงานสำหรับประมวลผล agreements  ใช้ Header Exchange และ Queue 3 ตัว

Queue A สำหรับรับ Message ที่รูปแบบเป็น pdf และเป็นข้อมูลประเภท report x-match = all
Queue B สำหรับรับ Message ที่รูปแบบเป็น pdf และเป็นข้อมูลประเภท log x-match = any
Queue C สำหรับรับ Message ที่รูปแบบเป็น zip และเป็นข้อมูลประเภท report x-match = all

X-match = any หมายถึง ต้องมี Header value อย่างน้อย 1 ตัว ใน Message ที่จะต้อง Match กับ Binding

ส่วน X-match = all หมายถึงทุก Header value ใน Message จะต้อง Match กับ Binding

Example Scenario

Message #1 มี Header Argument format=pdf, type=report –        Message #1 ถูกส่งไป Queue A เนื่องจาก Message Header ทั้ง format: pdf, type: report ตรงกับ Binding ทั้งหมดของ Queue A (X-Match = all)

–        Message #1 ถูกส่งไป Queue B ด้วย เนื่องจาก Message Header format: pdf, type: report ตรงกับ Binding ของ Queue B อย่างน้อย 1 ตัว (X-Match = any)

–        Message #1 ไม่ถูกส่งไป Queue C เนื่องจาก Queue C กำหนด X-Match = all คือต้องมีทั้ง format: zip และ type: log

Message #2 มี Header Argument format=pdf –        Message #2 ถูกส่งไป Queue B เนื่องจาก Message Header มี format: pdf ตรงกับ Binding 1 อย่าง (X-Match = any)

–        Message #2 ไม่ถูกส่งไป Queue A เนื่องจาก Queue A กำหนด X-Match = all คือต้องมีทั้ง format: pdf และ type: report

–        Message #2 ไม่ถูกส่งไป Queue C เนื่องจาก Queue C กำหนด X-Match = all คือต้องมีทั้ง format: zip และ type: log

 

Message #3 มี ด้วย Header Argument format=zip, type=log –        Message #2 ถูกส่งไป Queue B เนื่องจาก Message Header มี type: log ตรงกับ Binding 1 อย่าง (X-Match = any)

–        Message #2 ไม่ถูกส่งไป Queue A เนื่องจาก Queue A กำหนด X-Match = all คือต้องมีทั้ง format: pdf และ type: report

–        Message #2 ไม่ถูกส่งไป Queue C เนื่องจาก Queue C กำหนด X-Match = all คือต้องมีทั้ง format: zip และ type: log

 

 

ทั้งหมดนี้ก็คือส่วนสำคัญของ Rabbit MQ ครับ หากใครยังไม่ทันได้อ่านตอนที่ 1 ไปติดตามกันในลิ้งก์ https://www.stream.co.th/rabbit-mq-part1/ นะครับ

สนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 ครับ

 

เรียบเรียงโดย Siripod Surabotsophon

0 2 Continue Reading →

Rabbit MQ ตอนที่ 1

Rabbit MQ คืออะไร

Rabbit MQ เป็น Software จำพวก Message Broker ซึ่งรับ Message จากระบบหนึ่งแล้วส่ง Message ต่อไปยังอีกระบบหนึ่ง นึกภาพคล้ายกับที่ทำการไปรษณีย์ (Post Office) คือผู้ส่งจดหมายซึ่งระบุชื่อและที่อยู่ของผู้รับ นำจดหมายที่ต้องการส่งไปยังตู้ไปรษณีย์ จากนั้นบุรุษไปรษณีย์ (Postman) จะทำการนำจดหมายนั้นส่งไปถึงผู้รับ

Rabbit MQ เป็นเสมือนทั้งตู้ไปรษณีย์ ที่ทำการไปรษณีย์ และบุรุษไปรษณีย์ เพียงแต่ Rabbit MQ ไม่ได้ทำงานกับจดหมายกระดาษ เพราะเป็นข้อมูลอิเล็กทรอนิกส์

Credit: ภาพจาก https://www.youtube.com/watch?v=dTx4MONz9CQ

Rabbit MQ ใช้ทำอะไร

การมีระบบจัดการด้าน Messaging ช่วยให้ Software Application ต่าง ๆ สามารถ Connect หากันได้และสามารถ Scale ได้ การ Connect นี้ก็มีทั้ง Application หลาย ๆ ตัว Connect ถึงกันได้ (ซึ่งแต่ละชิ้นก็เป็นองค์ประกอบของ Application ที่ใหญ่กว่า) หรือ Application connect ไปหาอุปกรณ์ต่าง ๆ หรือข้อมูลต่าง ๆ

เราสามารถนำแนวคิดของ Message Queue มาใช้จัดการเรื่อง data delivery, Non-blocking operation หรือ Push Notification รวมทั้งสามารถใช้ในงานแบบ Publish/Subscribe, Asynchronous processing, Work queues

Rabbit MQ เป็น Message Broker ซึ่งเป็นตัวกลางของระบบ Messaging โดยช่วยให้ Application ของเรามี platform ร่วมกันสำหรับส่งและรับ Message นอกจากนี้ยังเป็นที่จัดเก็บ Message ที่ปลอดภัยจนกว่าผู้รับจะได้รับ Message

 

1. Data Delivery

บางครั้ง หลายระบบงานที่ทำงานร่วมกัน อาจมีการส่งข้อมูลปริมาณมาก ๆ ระหว่างกัน ซึ่งไม่สามารถทำงานแบบ Real-time ได้เสมอไป ในบางองค์กรใช้วิธีการ Batch โดยตั้ง Schedule ให้ระบบสร้างไฟล์ Batch ออกมา แล้วส่งให้อีกระบบหนึ่งตาม Schedule ที่ตกลงกัน (ตัวอย่างเช่นระบบงาน Human Resource ส่งรายชื่อพนักงานใหม่ทุกสิ้นวันผ่าน Batch File ซึ่งส่งกระจายให้กับระบบงานอื่น ๆ เพื่อไป Create user account ให้พนักงานใช้) หากทำ Message Broker มาช่วยจัดการ จะลดการทำงานแบบ Batch นี้ออกไปได้

 

 

2. Non-Blocking Operation และ Asynchronous Operation

บางระบบงานที่ประกอบด้วยหลาย Process ทำงานร่วมกันนั้น มักจะมีการเรียกใช้งานระหว่างกัน ซึ่งหลาย ๆ ครั้งเกิดปัญหา Blocking ได้

Credit: ภาพจาก: https://www.researchgate.net/figure/Blocking-and-non-blocking-operation-calls_fig18_312384750

 

Credit: ภาพจาก https://www.koyeb.com/blog/introduction-to-synchronous-and-asynchronous-processing

 

รูปด้านซ้ายแสดงการทำงานที่เกิด Blocking operations คือ Process A ส่งงานให้ Process B ทำงาน ระหว่าง B ทำงานอยู่ A จะต้องรอจน B ทำเสร็จ แล้ว A จึงจะทำงานต่อได้ (เรียกว่าเป็น Synchronous) จะเห็นได้ว่าระบบจะเสียทรัพยากรไปเปล่าประโยชน์ในช่วงที่ A รอ B เพราะ A ไม่ได้ทำงานช่วงนั้นเลย อีกทั้งหาก B ทำงานช้า จะทำให้ A ทำงานช้าไปด้วย และภาพรวมของระบบก็จะทำงานได้ Throughput น้อยลง

ส่วนรูปด้านขวาแสดงการทำงานแบบ Non-blocking operations (เป็นแบบ Asynchronous) คือ Process A ส่งงานให้ Process B ทำงาน ระหว่างที่ B ทำงานอยู่ A ก็สามารถทำงานอื่นของตนต่อได้ เมื่อ B ทำเสร็จก็จะแจ้งกลับมาที่ A จะเห็นได้ว่าระบบใช้ทรัพยากรคุ้มค่ากว่า

เราสามารถนำ Software จำพวก Message Broker มาช่วยปรับปรุงระบบในลักษณะนี้ได้ โดยให้ Message Broker รับคำสั่งจาก Process A แล้วให้ Broker ส่งให้ Process B เมื่อ A ส่งให้ Broker แล้ว A สามารถทำงานอื่นต่อได้โดยไม่ต้องรอ (แต่มีเงื่อนไขว่างานอื่นที่ A หยิบมาทำระหว่างนั้น ไม่จำเป็นต้องใช้ผลลัพธ์จาก B)

 

3. Push Notification

Push Notification เป็นการส่งข้อความจากระบบไปยังอุปกรณ์หรือเครื่องคอมพิวเตอร์ของ User เพื่อแจ้งข้อมูล ข่าวสาร หรือร้องขอให้ทำ Action บางอย่างกลับไป ในระบบที่มีปริมาณการใช้งาน Notification สูง ๆ อาจะเกิด Blocking ขึ้นในจุดนี้ได้ ดังนั้นการนำ Message Broker มาช่วยจัดการส่วนนี้ จะลด Blocking Operation จากการที่ระบบต้นทางต้องรอ Push Server ทำงาน

 

4. Publish/Subscribe

Credit: ภาพจาก https://docs.microsoft.com/en-us/azure/architecture/patterns/publisher-subscriber

ในเชิง Software Architecture นั้น Publish/Subscriber จัดว่าเป็นรูปแบบหนึ่งของ Messaging ซึ่งผู้ส่ง Message (เรียกว่า Publisher) จะไม่ถูกกำหนดให้ส่ง Message ให้หาผู้รับ (Subscriber) โดยตรง แต่ละจัดแบ่งหมวดหมู่ของ Published Message โดยมักจะไม่สนใจว่า Subscriber คือใคร ส่วน Subscriber จะรับ Message เฉพาะที่ตนเองสนใจเท่านั้น โดยไม่ต้องรับรู้ว่ามาจาก Publisher รายใด ดังนั้น Message Broker จึงทำหน้าที่เป็นตัวกลางอย่างดีในการจัดการ Message เหล่านี้ ระหว่าง Publisher และ Subscriber โดย Publisher ทำการ Publish Message ไปยัง Input Channel ของ Broker และ Subscriber จะคอยรับ Message จาก Output Channel ของ Broker

 

Rabbit MQ เหมาะกับงานลักษณะใด

  • Data Delivery
  • Non-blocking operation
  • Push notification
  • Publish/Subscribe
  • Asynchronous Processing
  • Work Queues

 

Case Study

1. การส่งข้อความแจ้งเตือนเมื่อมีการ Login เข้าใช้งานระบบ

ระบบงานหนึ่งมี Requirement ว่า เมื่อ User ได้ Login ผ่านแล้ว ระบบจะต้องส่ง Email แจ้งไปยังผู้ใช้งานว่ามีการ Login ซึ่งจะช่วย User ในกรณีมีผู้อื่นแอบนำ Credential ของตนเองไปแอบใช้ การส่งแจ้งเตือนจะทำให้ User ตัวจริงทราบว่ามีการเข้าใช้งาน และดำเนินการระงับการใช้งานได้ทัน ก่อนจะเกิดความเสียหายได้

มีเหตุการณ์วันหนึ่งว่า Mail Gateway ซึ่งเป็นตัวกลางในการส่ง Email เกิดขัดข้อง ทำให้ระบบงานนี้ไม่สามารถเชื่อมต่อได้ ผลก็คือการ Login จะช้ามาก เพราะรอการเชื่อมต่อกับ Mail Gateway แล้วยิ่งมี User เข้า Login อย่างต่อเนื่องตลอดทั้งวัน ก็ยิ่งเกิด Bottleneck ให้การเข้าใช้งาน ทั้ง ๆ ที่ตัวระบบนี้เองไม่ได้มีปัญหาภายใน

การทำงานลักษณะนี้ สามารถปรับปรุงได้ โดยให้โปรแกรมส่วนหลักทำการ Publish ข้อมูลสำหรับการส่ง Email Notification ไปยัง Message Queue แล้วให้ Consumer ดำเนินการส่งอีเมลผ่าน Mail Gateway ส่วนโปรแกรมส่วนหลักก็ Execute ต่อไปโดยไม่ต้องรอผลการส่ง Email

2. การ Generate Report ผ่านหน้า Web Application

ระบบงานหนึ่งมี Requirement ให้สร้าง Export ข้อมูลธุรกรรมย้อนหลังจำนวนมาก และข้อมูลแต่ละ Row ก็มี Column จำนวนหลายร้อย Column จึงใช้เวลานานมากในการสร้างไฟล์ หากเราออกแบบให้ทำงานแบบ Synchronous ก็จะเกิด Waiting Time ยาวนาน และ User ต้องรอจนกว่าจะเสร็จ หน้าจอ ขึ้น pop-up ให้ Save แล้วกด Save File ได้ จึงจะไปทำงานหน้าจออื่นได้

การออกแบบ จึงเลือกใช้ Message Broker เข้ามาช่วย โดยโปรแกรมส่วนหลัก (Publisher) ทำการ Publish คำสั่ง Export ไปยัง MQ แล้ว Update สถานะของ Job นี้เป็น In Progress  จากนั้น Consumer Process ดำเนินการ Export ข้อมูลและ Save File ลงใน Disk จากนั้นจึง Update สถานะของ Job เป็น Finish เมื่อ User เห็นสถานะนี้แล้วจึงกด Link เพื่อ Download File นั้นไปใช้งานในช่วงเวลาหลังจากที่ Publish คำสั่งเข้า MQ นั้น ไปจนถึง Consumer ทำงานเสร็จนั้น ทาง User ไม่จำเป็นรออยู่ที่หน้าจอเดิม สามารถไปหน้าจออื่นเพื่อทำงานอื่นได้

3. การยืนยันตัวตนใน NDID Platform

ปัจจุบัน Mobile Banking Application ของสถาบันการเงินต่าง ๆ มี Feature เรื่อง NDID Service ซึ่งเป็นบริการยืนยันตัวตนและขอข้อมูลส่วนบุคคลระหว่างสถาบันการเงิน โดยลูกค้าของธนาคารสามารถขอให้ Application สถาบันการเงินที่ตนติดต่ออยู่ เชื่อมต่อไปยังระบบของอีกสถาบันการเงิน เพื่อให้ทำการยืนยันตัวตนให้ ซึ่งการยืนยันตัวตนนี้อาจใช้เวลานาน เพราะมีทั้งการตรวจสอบสิทธิ์ด้วย PIN หรือ One-Time Password, การตรวจทานข้อมูลส่วนตัว, การทำ Face Recognition ดังนั้นจึงมีการนำ MQ เข้ามาใช้ในการรับส่งข้อมูลการขอยืนยันตัวตนระหว่างสถาบันการเงินด้วยกัน

Credit: ภาพจาก NDID Platform

 

สำหรับในส่วน Introduction จะขอจบเพียงเท่านี้ ในตอนถัดไปจะกล่าวถึงการใช้งาน Rabbit MQ ในรูปแบบต่าง ๆ ครับ

เรื่องของ NDID สามารถอ่านได้ที่ https://www.stream.co.th/why-ndid/

หากสนใจโซลูชั่นด้านดิจิทัล สามารถติดต่อเราได้ที่อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะครับ

 

เรียบเรียงโดย Siripod Surabotsophon

1 4 Continue Reading →

AMLO Report System สำคัญอย่างไร ทำไมสถาบันการเงินต้องมี?

AMLO หรือ สำนักงานป้องกันและปราบปรามการฟอกเงิน หรือ สำนักงาน ปปง. (The Anti-Money Laundering Office : AMLO) เป็นหน่วยงานของรัฐซึ่งมีอำนาจหน้าที่ในการวางหลักเกณฑ์ และดูแลให้มีการปฏิบัติตามกฎหมาย ว่าด้วยการป้องกันและปราบปรามการฟอกเงิน รวมทั้งเป็นหน่วยงานตรวจสอบวิเคราะห์ข้อมูลทางการเงินที่เกี่ยวข้องกับการฟอกเงิน ในหน้าที่ของหน่วยงานวางหลักเกณฑ์ (Regulator)

สำนักงาน ปปง.มีบทบาทในการศึกษาหามาตรการในการป้องกัน และปราบปรามการฟอกเงิน โดยมีฐานะเป็นฝ่ายเลขานุการของคณะกรรมการป้องกันและปราบปรามการฟอกเงิน (คณะกรรมการ ปปง.) ส่วนในฐานะของหน่วยงานผู้บังคับใช้กฎหมาย (Law Enforcement) สำนักงาน ปปง. มีอำนาจหน้าที่ในการตรวจสอบและดำเนินการเกี่ยวกับธุรกรรมหรือทรัพย์สินที่เกี่ยวข้องกับการกระทำความผิดฟอกเงิน ตามมติของคณะกรรมการธุรกรรม ตลอดจนดูแลให้ผู้มีส่วนเกี่ยวข้องปฏิบัติตามกฎหมายว่าด้วยการป้องกันและปราบปรามการฟอกเงินดังกล่าว

สำนักงาน ปปง. เป็นหน่วยงาน จัดตั้งขึ้นตามพระราชบัญญัติป้องกันและปราบปรามการฟอกเงิน พ.ศ. 2542 มีเลขาธิการ ปปง. เป็นข้าราชการพลเรือนสามัญ ซึ่งพระบาทสมเด็จพระเจ้าอยู่หัวทรงพระกรุณาโปรดเกล้าฯ แต่งตั้งขึ้นตามคำแนะนำของคณะรัฐมนตรีและได้รับความเห็นชอบจากสภาผู้แทนราษฎรและวุฒิสภา ทำหน้าที่ควบคุมดูแลโดยทั่วไปซึ่งราชการของสำนักงาน และเป็นผู้บังคับบัญชาข้าราชการในสำนักงาน และรองเลขาธิการเป็นผู้ช่วยสั่งและปฏิบัติราชการ

(อ้างอิง: https://www.amlo.go.th/)

AMLO Report System คืออะไร

ระบบ AMLO Report เป็น Web Application เพื่อให้สถาบันการเงินจัดการข้อมูล ที่จะต้องรายงานต่อสำนักงานป้องกันและปราบปรามการฟอกเงิน (สนง.ปปง. / AMLO) รายงานที่จัดการมี 4 ประเภท คือ

  1. ปปง. 1-01 (รายงานธุรกรรมที่ใช้เงินสด)
  2. ปปง. 1-02 (รายงานการทำธุรกรรมที่เกี่ยวกับทรัพย์สิน)
  3. ปปง. 1-03 (รายงานธุรกรรมที่มีเหตุอันควรสงสัย)
  4. ปปง. 1-05-9 (รายงานธุรกรรมที่เกี่ยวข้องกับการโอนเงินหรือชำระเงินทางอิเล็กทรอนิกส์)

AMLO Report System เหมาะสำหรับองค์กรใด

ระบบงานนี้เป็นสิ่งจำเป็นสำหรับสถาบันการเงินทุกแห่ง ที่อยู่ภายใต้กฎระเบียบว่าต้องรายงานธุรกรรมที่เข้าเกณฑ์ต่อสำนักงานป้องกันและปราบปรามการฟอกเงิน (ปปง. / AMLO) โดยความถี่ในการส่งขึ้นกับกฎเกณฑ์ที่กำหนดไว้ เช่น รายงาน ปปง. 1-01, 1-02 และ 1-05-9 ต้องรวบรวบข้อมูลคราวละ 15 วัน คือข้อมูลวันที่ 1 ถึงวันที่ 15 ของแต่ละเดือนต้องส่งภายในวันที่ 22 ของเดือนนั้น ข้อมูลวันที่ 16 ถึงสิ้นเดือน ต้องส่งภายในวันที่ 7 ของเดือนถัดไป)

AMLO Report System ทำอะไรได้บ้าง

ฟีเจอร์ของระบบโดยสังเขป มีดังนี้

  1. การบันทึก, แก้ไข, ยืนยันข้อเท็จจริง, ค้นหารายงานประเภท 1-01, 1-02, 1-03, 1-05-9
  2. Import ข้อมูลจาก Source/Application ต่าง ๆ ตามรูปแบบที่กำหนด เช่น Fix Length, XML เป็นต้น
  3. เชื่อมต่อกับระบบของธนาคาร เพื่อดึงข้อมูลลูกค้า, บัญชี
  4. Export ข้อมูลรูปแบบ CSV, EXCEL
  5. Export ข้อมูลในรูปแบบ XML File ตามที่ ปปง. กำหนด
  6. Operation Report เช่น สรุปข้อมูลรายวัน/รายเดือน, ข้อมูลที่บันทึกใหม่, ข้อมูลที่ยังไม่ได้ยืนยันข้อเท็จจริง แยกตามประเภทรายงาน
  7. Audit Log เพื่อติดตามการใช้งานของ User
  8. User & Role Management
  9. System Configuration สำหรับปรับแต่งการทำงานของระบบ

 

AMLO Report System มีส่วนประกอบซอฟต์แวร์อะไรบ้าง

  • Front-end เป็นส่วนของ User Interface ซึ่งพัฒนาด้วย Angula JS ทำงานบน Node JS และมี Apache HTTP Server สำหรับติดต่อกับ End User ผ่าน Web Browser
  • Back-end เป็นส่วนของการประมวลผล ทั้ง Online และ Batch ส่วนนี้พัฒนาด้วย Java และใช้ Framework Spring Boot และใช้ Rabbit MQ สำหรับจัดคิวงานต่าง ๆ
  • Data เป็นส่วนที่เก็บข้อมูลของระบบ ซึ่งใช้ MS SQL Server จัดการ

 

 

ผลงานที่ผ่านมา สตรีมฯ เป็นผู้วางแผนและติดตั้งระบบ AMLO Report System ให้กับธนาคารเอกชนขนาดใหญ่ มีผู้ใช้งานในหลายร้อยสาขาของธนาคาร และในสำนักงานใหญ่ หากสถาบันการเงินหรือผู้ให้บริการทางการเงินใด สนใจติดตั้งระบบนี้ สามารถติดต่อได้ที่ฝ่ายการตลาด อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233 นะครับ

 

เรียบเรียงโดย Siripod Surabotsophon

0 0 Continue Reading →

คุณทราบหรือไม่ ตราสารบางประเภท สามารถเสียอากรแสตมป์เป็นอิเล็กทรอนิกส์ได้!!

ตั้งแต่วันที่ 1 กรกฎาคม 2562 ที่ผ่านมา มีประกาศอธิบดีกรมสรรพากร เกี่ยวกับอากรแสตมป์ (ฉบับที่ 58) กำหนดวิธีในการชำระอากรแสตมป์รูปแบบใหม่สำหรับตราสารที่เป็นอิเล็กทรอนิกส์ 5 ประเภท

 

ข้อดี คือ องค์กรที่มีการทำเอกสารสัญญาเป็นไฟล์อิเล็กทรอนิกส์ จะได้รับความสะดวกสบายในการทำธุรกรรมออนไลน์ สามารถชำระภาษีผ่านระบบชำระเงินผ่านอินเตอร์เน็ตของกรมสรรพากร (E-Filing) ได้โดยตรง ไม่ต้องออกเอกสารเป็นกระดาษ

 

ตราสารอิเล็กทรอนิกส์ 5 ประเภท มีอะไรบ้าง

  1. ตราสาร 4 จ้างทำของ
  2. ตราสาร 5 กู้ยืมเงินหรือทำการตกลงให้เบิกเงินเกินบัญชีจากธนาคาร
  3. ตราสาร 7 ใบมอบอำนาจ
  4. ตราสาร 8 ใบมอบฉันทะสำหรับให้ลงมติในที่ประชุมบริษัท
  5. ตราสาร 17 ค้ำประกัน

 

ในกรณีที่องค์กรทำเอกสารตราสารด้านบนเป็นอิเล็กทรอนิกส์ จะต้องมีการชำระอากรแสตมป์เป็นตัวเงินด้วยแบบ อ.ส. 9 โดยมี 2 ช่องทางในการยื่นแบบคือ

  1. ชำระด้วยตนเองผ่านระบบยื่นแบบภาษีด้วยอินเตอร์เน็ต
  2. ยื่นชำระผ่านทาง Application Programming Interface (API) ของผู้ให้บริการที่ได้รับอนุมัติให้เชื่อมต่อกับกรมสรรพากรได้

 

พูดง่าย ๆ คือช่องทางแรก เหมาะสำหรับธุรกิจที่มีปริมาณเอกสารสัญญาน้อย ส่วนองค์กรที่ต้องชำระอากรแสตมป์เป็นจำนวนมากก็แนะนำให้ยื่นผ่านทาง API จะสะดวกกว่ามาก

 

หากต้องการชำระอากรแสตมป์เป็นอิเล็กทรอนิกส์ผ่านทาง API ต้องทำอย่างไร?

สามารถติดต่อผู้ให้บริการ เช่น สถาบันการเงิน ซึ่งจะดำเนินการจัดทำ และยื่นขอเสียอากรเป็นตัวเงินผ่านระบบเครือข่ายอินเตอร์เน็ต แทนผู้มีหน้าที่เสียอากรตามประมวลรัษฎากร ในประกาศของกรมสรรพากร

ภาพจาก: https://estamp.rd.go.th/stampweb/#/document/support

 

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

 

ระบบของสตรีมฯ ทำอะไรได้บ้าง

  1. การรับและการส่งไฟล์จำนวนมากหรือไฟล์ขนาดใหญ่ โดยกำหนดตารางเวลาทำงานอัตโนมัติตามรอบหรือระยะเวลาได้
  2. รองรับรูปแบบของข้อมูล และตรวจสอบความถูกต้องของข้อมูลตามที่กำหนดไว้ในระบบ รวมถึงเติมเต็มข้อมูลให้ครบถ้วนก่อนส่งไปยังกรมสรรพากร
  3. รองรับการตรวจสอบและอนุมัติตามที่กำหนด เพื่อเตรียมนำส่งข้อมูล
  4. สามารถปรับเปลี่ยนข้อมูลที่มีรูปแบบที่แตกต่างกัน ให้เป็นรูปแบบมาตรฐานกระบวนการในการรับส่งข้อมูลตามที่สรรพากรกำหนด พร้อมทั้งมีการเข้ารหัสข้อมูล ช่วยรักษาข้อมูลต่าง ๆ ให้มีความปลอดภัย และรองรับตามมาตรการตามกฎหมาย
  5. รองรับการกำหนดตารางเวลา การนำส่งข้อมูลให้ใหม่โดยอัตโนมัติ หากเกิดข้อผิดพลาดขึ้น รวมถึงสามารถดำเนินการส่งใหม่โดยผู้ใช้งานแบบ manual
  6. สามารถดาวน์โหลดเอกสาร ชุดชำระเงิน ใบเสร็จรับเงิน รหัสรับรองการเสียอากรแสตมป์
  7. รองรับการสร้างข้อมูลการชำระเงิน เพื่อบริการโอนเงินเข้าบัญชีระหว่างธนาคารอัตโนมัติ
  8. กำหนดผู้เข้าถึงระบบและสิทธิ์การใช้งานได้ กำหนดข้อมูลระบบ และกำหนดข้อมูลของระบบที่เกี่ยวข้อง
  9. ตรวจสอบสถานะการทำงานในแต่ละขั้น ตอนตั้งแต่จัดเตรียมข้อมูล จัดส่งไปยังกรมสรรพากร และผลการตรวจสอบจากกรมสรรพากรได้
  10. สามารถกำหนดการแจ้งเตือนให้ผู้ใช้งานในแต่ละขั้นตอนได้
  11. จัดทำรายงานการเข้าระบบของผู้ใช้งาน รายงานการจัดเตรียมข้อมูล และรายงานผลการตรวจสอบจากกรมสรรพากร

 

สรุปจุดเด่นของระบบสตรีมฯ

– รองรับการจัดการ รายงานการนำส่ง และนำส่งข้อมูลเป็นจำนวนมากได้อย่างมีประสิทธิภาพ

– ใช้ชุดคำสั่งคอมพิวเตอร์ที่เป็นมาตรฐานในการเชื่อมต่อกับระบบงานของกรมสรรพากร และมีความปลอดภัย

– สามารถเรียกดูหรือดาวน์โหลดเอกสารตราสารอิเล็กทรอนิกส์ ใบเสร็จรับเงิน และรหัสรับรองการชำระอากรแสตมป์

– มีการลงลายมือชื่ออิเล็กทรอนิกส์ให้ผู้เสียอากรนำไปใช้อ้างอิงหรือผนวกกับตราสารอิเล็กทรอนิกส์ เพื่อแสดงว่าตราสารอิเล็กทรอนิกส์นั้นได้ปิดแสตมป์บริบูรณ์

 

ท่านใดในองค์กรมีตราสาร  5 ประเภท ที่ต้องการชำระเป็นอิเล็กทรอนิกส์จำนวนมาก ไม่ว่าจะเป็นตราสารสัญญาจ้างทำของ สัญญากู้ยืมเงินหรือทำการตกลงให้เบิกเงินเกินบัญชีจากธนาคาร ใบมอบอำนาจ ใบมอบฉันทะสำหรับให้ลงมติในที่ประชุมบริษัท และสัญญาค้ำประกัน ถ้าต้องการทำระบบชำระอากรแสตมป์เป็นตัวเงินสำหรับตราสารอิเล็กทรอนิกส์ สามารถติดต่อสตรีมฯ ได้ที่ฝ่ายการตลาด อีเมล Marketing@stream.co.th หรือโทร. 02-679-2233

ฝากอีกนิดค่ะ เราให้บริการทำระบบ “e-Withholding Tax” ให้กับธนาคารและผู้ให้บริการทางการเงินด้วยนะคะ อ่านต่อได้ที่ https://www.stream.co.th/e-wht-for-banking/

0 0 Continue Reading →

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายการใช้คุกกี้ และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

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

  • คุกกี้เพื่อการวิเคราะห์

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

Save