Saladpuk.com
🏆 เนื้อหาหลัก
🏆 เนื้อหาหลัก
  • 💖สลัดผัก
  • 📰มีอะไรใหม่บ้าง
    • 2020
      • 2020-11
      • 2020-10
      • 2020-09
      • 2020-08
      • 2020-03
      • 2020-02
      • 2020-01
    • 2019
      • 2019-12
      • 2019-11
      • 2019-10
      • 2019-09
      • 2019-08
  • 🤔อ่านเรื่องไรดี ?
  • มือใหม่หัดเขียนโค้ด
    • 👶เขียนโค้ดด้วยภาษา C#
      • เกิดมาไม่เคยเขียนโค้ดมาก่อนเบย
      • 👶พื้นฐาน
        • 1.โปรแกรมที่ต้องลง
        • 2.โครงสร้างของโค้ด
        • 3.ชนิดของข้อมูล
        • 4.การสร้างตัวแปร
        • 5.คำสั่งพื้นฐาน
        • 6.การแปลงข้อมูล
        • 7.การเปรียบเทียบค่า
        • 8.การตัดสินใจด้วย IF statements
        • 9.การตัดสินใจด้วย Switch statements
        • 10.การทำงานซ้ำๆด้วย While
        • 11.การทำงานซ้ำๆด้วย Do While
        • 12.การทำงานซ้ำๆด้วย For
        • 13.การแก้โจทย์จากรูป
        • 14.มารู้จักกับ Array กัน
      • 🧑ระดับกลาง
        • 15.Value type vs Reference type
        • 16.ลดงานซ้ำๆด้วย Method
        • 17.มารู้จักกับ Class & Field กัน
        • 18.มารู้จักกับ Constructor กันบ้าง
        • 19.มาเขียน Method ใน Class กัน
        • 20.มารู้จักกับ Property กัน
        • 21.ลองใช้คลาสแบบจริงจังบ้าง
        • 22.การสืบทอด Inheritance
        • 23.Polymorphism
        • 24.Abstract Class
        • 25.Interface
        • 26.Namespace
        • 27.Enum
        • 28.Exception handler
        • 29.ลงลึกกับ string
        • 30.StringBuilder เพื่อนคู่ string
      • 👨⏳ระดับสูง
        • Generic
        • Delegates
        • Action & Func
        • Lambda expression
        • LINQ
        • พระคัมภีร์การใช้คำสั่ง LINQ
      • 💡Tips
        • 💡C# version 8.0
        • 💡Boxing & Unboxing
    • 👶Algorithm
      • 👾Algorithm Big-O
      • 👽Algorithm P & NP
    • 👦OOP
      • 💖Abstraction
      • 💖Encapsulation
      • 🏆Abstraction & Encapsulation
      • 💖Inheritance
      • 💖Polymorphism
      • 🏆Inheritance & Polymorphism
      • 📝ลองเขียน OOP ดูดิ๊
      • 👑OOP + Power of Design
      • 🥰เทคนิคในการออกแบบ
    • 👶บทสรุปฐานข้อมูล
      • เก็บรูปในฐานข้อมูล
      • Database indexing
      • การลบข้อมูล
    • 👦Communication Patterns
    • 👦Design Patterns
      • 🤰Creational Patterns
        • 🏭Factory Method
        • 🏭Abstract Factory
        • ☝️ Singleton Pattern
        • 🏗️ Builder Pattern
        • 🎎Prototype Pattern
      • 🧱Structural Patterns
        • 🔌Adapter Pattern
        • 📪Proxy Pattern
  • Puzzle
    • 🧠Challenges
      • 🐴Google ม้า 25 ตัว
      • 🌉Amazon เสา 2 ต้น
      • 🥇ทองเก๊
      • 💊ยาต้านโควิด
      • 🎩CP หมวก 5 ใบ
      • 🧓Einstein's Riddle 01
  • พื้นฐานที่ควรต้องรู้
    • 🐳Docker
      • 📦Docker Containers
      • 🃏Docker Exercise 01
      • 🛠️ Docker Tools
      • 🗃️ Docker Registry
      • 🖼️ Container Image
      • 📢Docker Push
      • 🔄WSL
    • 👶Clean Code
      • 🧓Uncle Bob - Clean Code
      • 🧓Uncle Bob - Comments
      • 🧓Uncle Bob - Naming
      • 🧓Uncle Bob - Mindset
      • 🧓Uncle Bob - TDD
    • 👶Code Smells
    • 👶สิ่งที่คนเขียนโค้ดมักเข้าใจผิด
    • 👶AI พื้นฐาน
    • 👶Git พื้นฐาน
      • Git branching strategy
    • 👶Cloud พื้นฐาน
    • 👶UML พื้นฐาน
      • Activity Diagram
      • Class Diagram
      • Sequence Diagram
      • Use case Diagram
      • บทสรุปการใช้ UML
    • 👶Data Scientist
      • การเลือก Algorithms ให้ AI (1/5)
      • การเตรียมข้อมูลให้ AI (2/5)
      • หลักการตั้งคำถามให้ AI (3/5)
      • แฉความลับของ AI Model (4/5)
      • หัดเขียน AI จาก AI ของคนอื่น (5/5)
    • 👶DevOps พื้นฐาน
    • 👶Docker ขั้นพื้นฐาน
      • Image and Container
      • แชร์ Docker Image ที่สร้างไว้
    • 👶Microservices พื้นฐาน
      • Microservices ที่ดีมีลักษณะยังไง
      • Microservices Tips
      • จาก Monolith สู่ Microservices
    • 👶ความรู้พื้นฐานในการทำเว็บ
    • 👦Bottlenecks of Software
      • หัวใจที่สำคัญที่สุดของฐานข้อมูล
    • 👦Agile Methodology
      • Agile in a Nutshell
      • Software Development Life Cycle
      • Code Review
    • 👦Security พื้นฐาน
      • การเก็บรหัสผ่านที่ถูกต้อง
      • Security in actions
        • Hash function
      • Security Principles
      • 😎The Matrix 1
      • 😎The Matrix 2
      • HTTPS in a nutshell
    • 👦SOLID Design Principles
      • มารู้จักกับ SOLID กันดีกว่า
      • Single-Responsibility Principle
      • Open/Closed Principle
      • Liskov Substitution Principle
      • Interface Segregation Principle
      • Dependency-Inversion Principle
  • Cloud Computing
    • 👶Microsoft Azure 101
      • สมัคร Microsoft Azure
      • รู้จักกับ Resource Groups
      • สร้างเว็บตัวแรกกัน
      • สร้าง Virtual Machine กัน
      • ประเภทของคลาว์เซอร์วิส
      • มาสร้าง Logic App กัน
      • มาสร้าง Function App กัน
      • คลาว์คิดเงินยังไง ?
      • Cloud Native
      • Guideline for Cloud scaling
      • Auto Scaling
    • 👶Azure App Services
    • 👶App Service Plan
    • 👶Azure Storage
      • Blob storage
        • ลองสร้างที่เก็บไฟล์กันเลย
        • เข้าใจ Blob storage ให้มากขึ้น
        • ลองเขียนโค้ดอัพโหลดไฟล์กันบ้าง
        • สร้างเว็บจากที่ฝากไฟล์บนคลาว์
    • 👶Azure Bot Service
      • Bot เข้าใจเราได้ยังไงกันนะ
    • 👶Azure Cognitive Services
      • การสร้าง Cognitive Services
      • การ Login ด้วยใบหน้า
      • อ่านลายมือจากรูปเป็นตัวอักษร (OCR)
      • เขียน AI แยกของต่างๆทำยังไง?
      • เขียนแอพ ทายอายุ บอกเพศ ง่ายจิ๊ดเดียว
      • เขียนแอพให้ AI อธิบายรูปเป็นภาษาคน
    • 👶Machine Learning Studio
      • มาสร้าง AI ของแท้ตัวแรกของเรากัน
      • สร้าง AI ตัดสินใจอนุมัติบัตรเครดิต 💳
      • ลองเรียกใช้ AI ของเรากัน
    • 👶Azure Service Fabric
      • สร้าง Service Fabric กัน
    • 👶Blockchain
      • Blockchain ทำงานยังไง ?
      • Consensus Algorithm คืออะไร ?
      • สร้าง Blockchain ใช้เองกัน !
      • หัดเขียน Smart Contract กัน
    • 👶Power BI
    • 👶Azure Web App
      • เซิฟเวอร์บนคลาว์ ราคา? ต่าง?
    • 👶Azure DevOps
      • เล่น Azure DevOps กัน
      • เล่นกับ Repository
      • ลองทำ Continuous Integration (CI)
      • ลองทำ Continuous Delivery (CD)
      • เล่น Kanban Board
    • 🤠Cloud Playground
      • การป้องกันความลับหลุดตอนที่ 1
      • การป้องกันความลับหลุดตอนที่ 2
      • การป้องกันความลับหลุดตอนที่ 3
      • การป้องกันความลับหลุดตอนจบ
  • Software Testing
    • 👦Test-First Design
    • 👦Test-Driven Development
      • 1.มารู้จักกับ TDD กันดีกว่า
      • 2.Test cases เขาเขียนกันยังไงนะ
      • 3.เครื่องมือในการทดสอบ
      • 4.การใช้ Theory และ InlineData
      • 5.โค้ดที่ทดสอบได้
      • 6.Mantra of TDD
      • 7.Functional & None-Functional testing
      • 8.Manual vs Automation testing
      • 9.Automation Frameworks in .NET
      • 10.Mock Framework
      • 11.มาเรียนการใช้ Moq กันเถอะ
      • 12.สรุป
  • Web
    • 👦Web API
      • 1.Web API คืออะไร
      • 2.ติดตั้ง .NET Core SDK
      • 3.สร้าง Web API ตัวแรกกัน
      • 4.Verbs
      • 5.Swagger เพื่อคู่ API
      • 6.การใช้ Model
      • 7.เรียก Web API ผ่าน Postman
      • 8.มาจัดกลุ่ม API กัน (1/2)
      • 9.มาจัดกลุ่ม API กัน (2/2)
  • Software Design
    • 🤴Design Patterns
      • 🦈Creational patterns
        • Abstract Factory
        • Builder
        • Factory Method
        • Prototype
        • Singleton
      • 🦈Structural patterns
        • Adapter
        • Bridge
        • Decorator
        • Facade
        • Proxy
      • 🦈Behavioral patterns
        • Chain of Responsibility
        • Command
        • Iterator
        • Mediator
        • Memento
        • Observer
        • State
        • Strategy
        • Template Method
        • Visitor
Powered by GitBook
On this page
  • 🤔 Serverless คืออะไร ?
  • 🤔 อยากได้ Function App ยังไง ?
  • 🤔 สร้างเสร็จแล้วไงต่อ ?
  • 🎥 ตัวอย่างการทำ Function App
  • 🎯 บทสรุป

Was this helpful?

Export as PDF
  1. Cloud Computing
  2. Microsoft Azure 101

มาสร้าง Function App กัน

เขียนโค้ดโดยไม่สนใจเรื่องเซิฟเวอร์ล่ม กับ Azure Serverless

Previousมาสร้าง Logic App กันNextคลาว์คิดเงินยังไง ?

Last updated 5 years ago

Was this helpful?

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

Azure Portal จะทำตามในรอบนี้ให้เข้าไปที่ เน่อ ส่วนถ้าใครยังไม่ได้สมัครก็ไปสมัครให้เรียบร้อยแซ๊ร

🤔 Serverless คืออะไร ?

หนึ่งใน Concept ที่อยู่บน Microsoft Azure คือตัวที่เรียกว่า Serverless หรือพูดง่ายๆคือ Developer ทั้งหลายเอ๋ยจง focus กับเรื่องโค้ดซะ ส่วนเรื่อง Server ข้าจะจัดการให้เจ้าเองงงงงง หรือพูดเป็นภาษาคนคือ เราไม่ต้องสนใจเรื่องเซิฟเวอร์เลยนั่นเอง ดังนั้นเราก็ไม่ต้องมี Admin มาคอยนั่งจัด spec server อะไรพวกนี้อีกแล้ว เราแค่เขียนโค้ด แล้วก็โยนขึ้นคลาว์ เพียงเท่านี้มันก็จะพร้อมให้เราใช้งานได้นั่นเอง

🤔 อยากได้ Function App ยังไง ?

1.ที่เมนูด้านซ้ายมือให้เลือก Resource groups ซะ แล้วในหน้าตรงกลางให้เลือกชื่อ Resource group ที่เราสร้างไว้

2.หลังจากที่เข้ามาใน Resource group แล้วให้กดปุ่ม + ที่มุมบนซ้ายของเมนู

3.ระบบจะพาเราไปที่หน้า Marketplace ซึ่งในหน้า marketplace นี้เป็นหน้าหลักในการเลือก service ที่เราจะทำการสร้าง ซึ่งในรอบนี้เราจะพิมพ์ในช่องค้นหาว่า Function App แล้วกด Enter เลย

4.ถัดมาเขาก็จะบอกรายละเอียดเกี่ยวกับ Function App ว่ามันคืออะไร จะไปศึกษาลองเล่นต่อได้ยังไง ราคาที่ต้องจ่ายต่อเดือนคิดยังไง บลาๆ ก็ถ้าอ่านจนหนำใจแล้วก็จิ้มปุ่ม Create เบาๆไป 1 ทีงับ

5.ในขั้นตอนถัดมาเขาก็จะถามรายละเอียดของ Function App ของเรา ซึ่งในส่วนนี้ก็ค่อยๆเลือกใส่ทีละอันเลย แล้วพอใส่เสร็จก็กดปุ่ม Create โลด

ชื่อ

รายละเอียด

App name

ชื่อ Function App ที่จะสร้าง

Hosting Plan

รูปแบบการเก็บเงิน

Location

ตัว Service นี้จะตั้งอยู่ที่ไหน (ทดสอบในไทยก็เลือก Southeast Asia นะ)

Runtime Stack

เราจะเขียน function ด้วยภาษาอะไร ในที่นี้ผมใช้ C# ครับ ส่วนเพื่อนๆแล้วแต่เลย

Storage

จะให้มันเก็บบันทึกๆการทำงานต่างๆที่เกิดขึ้นกับ Function App นี้ไว้ที่ไหน

Hosting Plan รูปแบบการเก็บเงินของ Function App มี 2 แบบตามด้านล่างนี้นะครับ 1.Consumption Plan - จะเก็บเงินทุกๆครั้งที่มีการเรียกใช้งาน แยกออกมาต่างหาก แล้วไปจ่ายตอนสิ้นเดือน 2.App Service Plan - จะไม่ได้เก็บเงินเพิ่ม เพราะมันจะเอาตัว Function App ไปทำงานบน App Service ที่เราสร้างไว้อยู่แล้ว ซึ่งสิ้นเดือน App Service Plan เราคิดเท่าไหร่เขาก็จะชาร์จตามนั้น แต่ข้อเสียคือแอพอื่นๆที่อยู่บน Service Plan นั้นอาจจะมีผลกระทบ เพราะ Function App ก็จะไปใช้ Resource ของ Server ด้วย

ถ้าไม่อยากให้การทำงานของ Function App ไปกระทบกับแอพอื่นๆให้เลือกเป็น Consumption Plan นะครับมันจะได้ไม่ยุ่งกับคนอื่นเลย หรืออีกกรณีคือสร้าง App Service Plan ที่เป็นตัวแชร์ให้ตัวที่เป็น Background process มาทำงานเล่นกันที่ App Service Plan ตัวนี้เลยก็ใช้ได้ในระดับนึงครับ แล้วค่อยทำ Scaling เอาอีกที

6.รอจนกว่าจะเสร็จก็เป็นอันเสร็จพิธี

🤔 สร้างเสร็จแล้วไงต่อ ?

จากขั้นตอนด้านบน มันเป็นการสร้าง service ที่เรียกว่า Function App ขึ้นมาเฉยๆ ซึ่งขั้นตอนถัดไปเราก็จะทำการลองเขียนโค้ดเพื่อเอาไปให้มัน Run เล่นกันบ้างตามขั้นตอนด้านล่างนี้เลย

1.เข้าไปที่ resource group ที่สร้างไว้ แล้วจะเห็น Function App กับผองเพื่อนของมันโผล่ขึ้นมาละ ให้จิ้มสัมผัสมันเบาๆอย่างอ่อนโยน 1 ที

2.ถัดมาเขาก็จะโชว์รายการ Function ต่างๆที่เรามี ซึ่งกรณีนี้เราพึ่งสร้างเสร็จ มันเลยไม่มี function อะไรให้เราเลย ดังนั้นเราก็จะทำการสร้าง function กันละโดยการกดปุ่ม + เลยจ๊า

3.ในการสร้าง function เราจะต้องเลือกว่าเราจะเขียนโค้ดด้วยวิธีไหน ซึ่งปรกติมีทั้ง 4 แบบ แต่ในรอบนี้เราจะใช้แบบที่เรียกว่า In-portal ครับ

me

ชื่อ Logic App ที่จะสร้าง

Visual Studio

เขียนโค้ดบน Visual Studio IDE แล้วค่อยเอามาขึ้น Function App

VS Code

เขียนโค้ดบน Visual Studio Code แล้วค่อยเอามาขึ้น Function App

Any editor + Core Tools

เขียนโค้ดบน IDE อื่นๆที่เราถนัด แล้วค่อยเอามาขึ้น Function App

In-portal

เขียนโค้ดบนคลาว์เลย

4.ถัดมาเขาจะถามว่าตัว function ของเราจะให้มันทำงานเมื่อไหร่ ซึ่งตัวหลักจะมี 3 แบบ แต่ในกรณีนี้เราจะเลือก Webhook + API ครับ

tudio

เขียนโค้ดบน Visual Studio IDE แล้วค่อยเอามาขึ้น Function App

Webhook + API

เราจะได้ลิงค์มา 1 ตัว ซึ่งเมื่อใครก็ตามเปิดลิงค์นี้ มันจะทำให้ function เราทำงานทันที

Timer

ตั้งเวลาไว้ ซึ่งเมื่อถึงเวลาที่กำหนด มันจะทำให้ function เราทำงานทันที

More templates

เลือกใช้ template แบบอื่นๆ (ลองกดเล่นดูได้นะ)

5.เป็นอันเรียบร้อย ตอนนี้เราก็จะได้ function มา 1 ตัวพร้อมกับโค้ดตัวอย่างพื้นฐานมาให้ด้วย คราวนี้เราก็จะลอง copy ลิงค์ที่ได้เพื่อเตรียมสั่งให้มันทำงาน โดยการกดปุ่ม Get function URL ตามรูปเบย

อธิบายโค้ด โค้ดตัวอย่างที่เขาเตรียมให้ไว้คือ เมื่อมีใครเรียก URL นี้มา มันก็จะไปหาค่า name มาเก็บไว้โดยขึ้นอยู่กับวิธีเรียก [เรียกมาแบบ GET] ตัวโปรแกรมจะไปอ่าน query string เพื่อหาค่า name มาเก็บไว้ในตัวแปร name [เรียกมาแบบ POST] ตัวโปรแกรมจะไปหาใน request body เพื่ออ่านค่า name มาเก็บไว้ในตัวแปร name ถัดมาเขาก็จะตอบกลับว่า Hello แล้วตามด้วยค่า name ที่เราใส่เข้ามา แต่ถ้าเราไม่ได้ใส่เขาก็จะบอกว่า ให้เราใส่ค่า name เข้ามาด้วย

6.หลังจากที่เรา copy แล้วถัดไปเราก็จะเอาไปลองเรียกดูผ่าน web browser ครับ ซึ่งพอลองเรียกเราก็จะได้ผลลัพท์แบบนี้

7.สาเหตุที่เป็นแบบนี้ก็เพราะว่าเรายังไม่ได้ส่งค่า name เข้าไปด้วย ดังนั้นเราก็จะลองส่ง name เข้าไปใน query string นะครับ โดยการเรียก URL ผ่าน web browser เหมือนเดิมนั่นแหละแต่ต่อท้ายมันด้วย &name=Saladpukลงไปครับ ซึ่งก็จะได้ผลลัพท์แบบนี้

8.นอกจากนี้เรายังสามารถลองเรียกใช้งานพร้อมดูผลลัพท์การทำงานแบบ real time ได้ด้วย โดยการกดปุ่ม Test ด้านขวาแล้วสั่งให้มัน Run ตามรูปเลยครับ

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

🎥 ตัวอย่างการทำ Function App

🎯 บทสรุป

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

ข้อควรระวัง ถ้าเราสร้าง Function App โดยใช้ App Service Plan เราต้องบริหารจัดการเรื่องทรัพยากรเครื่องเหมือนเดิมนะครับ ดังนั้นควรทำความเข้าใจเรื่องพวกนี้ดีๆก่อนค่อยสร้างนะครับ

👶
https://portal.azure.com
(วิธีสมัครจิ้มตรงนี้)
เสร็จแล้วก็กดปุ่ม Copy ครับ
ผลลัพท์จากการ Run ก็จะออกมาในโซนสีแดงครับ