Skip to main content

Welcome

  1. Basic Application Architecture

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

gdsc_1.png

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

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

gdsc_2.png

Server

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

Client

  • Staff เตรียมให้ โหลดได้ทางนี้เลย (“github link”)
  1. Basic Authentication

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

    Example Login Flow:

    gdsc_3.png

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

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

  2. Hexagonal Architecture

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

    gdsc_4.png

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

  3. Basic Golang

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

  4. Basic SQL

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