Skip to main content

Introduction

1. Basic Application Architecture

การทำ web application แบบเบื้องต้นจะมีภาพรวมเป็นประมาณนีัครับแบบเบื้องต้นจะมีภาพรวมเป็นประมาณนี้ครับ

gdsc_1.png

แต่หากเรามองให้เล็กลงไปจะเจอกับงานมากมายที่ต้องทำเพื่อให้เป็นแต่หากเรามองให้ลึกลงไปจะเจอกับงานมากมายที่ต้องทำเพื่อให้เป็น application 1 ตัวขึ้นมาหนึ่งตัว

งั้นก่อนอื่นเรามาทำดูระบบที่เรากำลังจะสร้างก่อนครับว่ามีอะไรบ้างที่เราต้องทำเพื่อให้ง่ายต่อการงั้นก่อนอื่นเรามาดูระบบที่เรากำลังจะสร้างก่อนครับว่ามีอะไรบ้างที่เราต้องทำเพื่อให้ง่ายต่อการ implement มากขึ้น

gdsc_2.png

Server

  1. Database - เพื่อเก็บข้อมูล ในที่นี้เราจะเก็บข้อมูลของซึ่งในที่นี้เราจะเก็บข้อมูลของ user นั้นเองนั่นเอง
  2. Business Logic - ส่วนที่ประมวณผลข้อมูลที่ได้เป็นสิ่งที่เราต้องการส่วนที่ประมวณผลข้อมูลเพื่อให้ได้สิ่งที่เราต้องการ ในที่นี้คือการได้แก่ การ Hash password, การทำ TOTP, การแปลงข้อมูล user เป็น token และและอื่น อื่นๆ
  3. HTTP Handler - เพื่อรับ API request จาก Client

Client

  • Staff เตรียมให้- โหลดได้ทางนี้เลยสามารถกดเข้าลิ้งค์นี้เพื่อดาวน์โหลด (“github link”)<link>

2. Basic Authentication

ปกติเวลาเราทำระบบโดยทั่วไปเมื่อมีการทำระบบ authentication เราจะใช้สิ่งที่เรียกว่า Json Web Token หรือ JWT มาเป้นตัวเก็บข้อมูลของเพื่อเก็บข้อมูลของ user แล้วส่งไปให้ Client เพื่อเอาไว้ยืนยันตัวตนในภายหลังซึ่งจะเก็บกันในเพื่อเอาไว้ยืนยันตัวตนในภายหลัง Cookieซึ่งจะเก็บในรูปแบบของ ของCookieในฝั่ง Client นั้นเองนั่นเอง

Example Login Flow:

Screenshot 2565-11-09 at 13.18.50.png

ตัวอย่างการใช้เช่นจากรูป การทำเป็นการส่ง request ที่ต้องให้ user login ก่อนอย่างการสร้างก่อน Post ในอย่างการสร้างโพสใน Facebook ก็จะส่งตัวโดยจะส่งตัว JWT Token ผ่าน Authorization Header ของ API request ไปด้วยเพื่อเป็นตัวบ่งบอกว่า user คนไหนเป็นคนส่ง request

แต่ไม่อยากให้ยึดติดกับ flow แบบนี้เสมอไปเพราะ application flow สามารถต่างกันได้แล้วแต่ที่เราออกแบบสามารถต่างกันได้แล้วแต่การออกแบบ โดยรวมถึงสิ่งที่เรากำลังจะทำในซึ่งรวมไปถึงสิ่งที่เรากำลังจะทำใน session นี้ด้วยซึ่งก็คือการเพิ่มระบบนี้ด้วยนั่นก็คือการเพิ่มระบบ OTP เข้าไปด้วยนั้นเองเข้าไปด้วยนั่นเอง

3. Hexagonal Architecture

เป็นวิธีการเขียน program แบบหนึ่งที่ใช้แบบหนึ่งที่ใช้คอนเซ็ปต์ concept “Port and Adapter pattern”pattern ซึ่งทำให้การเขียนนั้นดูยุ่งยากมากขึ้นแต่จะทำให้ในอนาคตเราเหนื่อยน้อยลงครับ

gdsc_4.png

จากภาพจะสังเกตุได้ว่าทุกๆอย่างจะเข้ามาที่ส่วนกลางซึ่งคือจากภาพจะสังเกตได้ว่าทุก ๆ อย่างจะเข้ามาที่ส่วนกลางซึ่งก็คือ Business Logic และจะมี Port เพื่อรอ Adapter เข้ามาเชื่อม ซึ่งตัวที่จะมาเชื่อมขอแค่มีซึ่งตัวที่จะมาเชื่อมจำเป็นต้องมี interface เหมือนกันก็จะสามารถเชื่อมต่อกันได้เหมือนกันจึงจะสามารถเชื่อมต่อกันได้ ทำให้เราสามารถflow รูปแบบนี้ทำให้เราสามารถ implement การ test ได้ง่ายขึ้น แถมยังสามารถจำกัดการมองเห็นของ HTTP handler หรือ user ได้อีกด้วยเพราะได้อีกด้วย เพราะ user จะสามารถรับรู้ได้แค่ตัว service เท่าน้ัน และโค้ดของเราก็จะเป็นระเบียบมากขึ้นอีกด้วย

4. Basic Golang

เขียนแบบ introduction เลย มีเรื่อง pointer ด้วยก็ดี

5. Basic SQL

แค่เขียนบอกว่าเอาไว้ทำอะไรก็พอ เดี่ยวเดี๋ยว example ที่เป็น query ไปทำในหัวข้ออื่น