Spring Boot คือ ตอนที่ 13 : การปรับใช้ (Deployment) แอปพลิเคชัน Spring Boot

  1. การแนะนำ (Introduction)
  2. การทำแอพ Spring Boot อย่างง่าย
  3. การปรับใช้ (Deployment) บนแอปพลิเคชันเซิร์ฟเวอร์
  4. การปรับใช้ (Deploying) เป็นบริการแบบสแตนด์อโลน (Standalone Service)
  5. การบรรจุคอนเทนเนอร์ (Containerizing) ด้วย Docker

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

1. การแนะนำ (Introduction)

การทำแอพด้วย Spring Boot เป็นประสบการณ์ที่สนุกสนานเนื่องจากกระบวนทัศน์ ‘convention over configuration’ การพึ่งพาที่ง่ายขึ้นด้วย Spring Boot starters และความสามารถในการบูตแอปพลิเคชันอย่างรวดเร็วโดยใช้ Spring Initializr อย่างไรก็ตาม วงจรการทำแอพจะไม่สมบูรณ์หากไม่มีการปรับใช้ที่สำเร็จ Spring Boot มอบวิธีการที่ราบรื่นในการปรับใช้แอปพลิเคชันบนแพลตฟอร์มต่างๆ ในบริบทนี้ เราจะพูดถึงวิธียอดนิยมสองวิธีในการปรับใช้แอปพลิเคชัน Spring Boot: การปรับใช้บนเซิร์ฟเวอร์แอปพลิเคชัน (เช่น Tomcat) และการปรับใช้เป็นบริการแบบสแตนด์อโลน นอกจากนี้ เราจะสำรวจการบรรจุแอปพลิเคชัน Spring Boot ด้วย Docker

2. การทำแอพ Spring Boot อย่างง่าย

ก่อนที่เราจะดำเนินการปรับใช้ เรามาทำแอพ Spring Boot อย่างง่ายกันก่อน คุณสามารถใช้ Spring Initializr ซึ่งเป็นเครื่องมือบนเว็บที่ให้บริการโดย Spring เพื่อบูตแอปพลิเคชันของคุณได้อย่างรวดเร็ว ไปที่เว็บไซต์ Spring Initializr กรอกข้อมูลเมตาของโครงการ เพิ่มการอ้างอิงที่จำเป็น (เช่น Spring Web) แล้วคลิก ‘Generate Project’ การดำเนินการนี้จะดาวน์โหลดไฟล์ zip ที่มีโครงกระดูกโครงการ

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

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {
    
    @GetMapping("/hello")
    public String helloWorld() {
        return "Hello, World!";
    }
}

เมื่อเรียกใช้แอปพลิเคชัน คุณจะสามารถเข้าถึงตำแหน่งข้อมูล REST นี้ได้ที่http://localhost:8080/ hello

3. การปรับใช้ (Deployment) บนแอปพลิเคชันเซิร์ฟเวอร์

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

ประการแรก ปรับเปลี่ยน packaging ในของคุณ pom.xml จาก jar เป็น war:

<packaging>war</packaging>

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

import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class Application extends SpringBootServletInitializer {
    // ...
}

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

4. การปรับใช้ (Deploying) เป็นบริการแบบสแตนด์อโลน (Standalone Service)

แทนที่จะปรับใช้แอปพลิเคชันของเราบนเซิร์ฟเวอร์แอปพลิเคชัน เรายังสามารถเรียกใช้เป็นบริการแบบสแตนด์อโลนได้อีกด้วย ในแนวทางนี้ เราจัดแพคเกจแอปพลิเคชันเป็นไฟล์ JAR (Java Archive) ซึ่งรวมถึงเซิร์ฟเวอร์ Tomcat แบบฝัง

ในไฟล์ pom.xml ของคุณ คุณต้องตั้งค่า packaging เป็น jar:

<packaging>jar</packaging>

คุณสามารถสร้างไฟล์ JAR ได้ด้วยการรันคำสั่ง mvn clean install ไฟล์ JAR นี้สามารถเรียกใช้ได้ทุกที่ที่ติดตั้ง Java ด้วยคำสั่ง: java -jar your-application-name.jar

5. การบรรจุคอนเทนเนอร์ (Containerizing) ด้วย Docker

อีกวิธีที่ได้รับความนิยมในการปรับใช้แอปพลิเคชัน Spring Boot คือการทำคอนเทนเนอร์ โดย Docker เป็นเครื่องมือที่ใช้บ่อยที่สุด

ขั้นแรก ให้ติดตั้ง Docker ในระบบของคุณ หากยังไม่ได้ติดตั้ง ต่อไปเราจะต้องสร้าง Dockerfile ไฟล์นี้กำหนดขั้นตอนในการสร้างอิมเมจ Docker ของแอปพลิเคชันของเรา นี่คือ Dockerfile อย่างง่ายสำหรับแอปพลิเคชัน Spring Boot:

FROM openjdk:8-jdk-alpine
EXPOSE 8080
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

ไฟล์ Docker นี้เริ่มต้นด้วยอิมเมจพื้นฐาน openjdk:8-jdk-alpine แสดงพอร์ต 8080 คัดลอกไฟล์ JAR ที่สร้างขึ้นจากtargetไดเร็กทอรีไปยังอิมเมจ Docker app.jar และสุดท้าย กำหนดจุดเริ่มต้นเพื่อเรียกใช้ไฟล์ jar

จากนั้น คุณสามารถสร้างอิมเมจ Docker ด้วยคำสั่งนี้

docker build -t your-application-name .

จากนั้นคุณสามารถเรียกใช้คอนเทนเนอร์ Docker ด้วยคำสั่ง:

docker run -p 8080:8080 your-application-name

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


Spring Boot คืออะไร

Spring Boot คือ ตอนที่ 12 : การพัฒนาไมโครเซอร์วิส (Microservices)