1. 학습 목표 설정

  • Python에서 AI 모델을 학습시키고, RESTful API로 제공하는 방법 이해.
  • Spring Boot에서 Python API를 호출하여 결과를 처리하는 방법 학습.
  • Python과 Spring Boot 간의 데이터 통신 방식(JSON 등) 이해.

2. Python에서 AI 모델 준비

1. Python 환경 설정:

  • Python 설치 및 주요 라이브러리 준비:
pip install flask tensorflow pandas numpy

 

2. 모델 학습 및 저장: 예를 들어, 간단한 TensorFlow 모델을 학습시키고 저장합니다:

import tensorflow as tf
import numpy as np

# 데이터 준비
X = np.array([1, 2, 3, 4], dtype=float)
Y = np.array([2, 4, 6, 8], dtype=float)

# 모델 정의
model = tf.keras.Sequential([tf.keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')

# 모델 학습
model.fit(X, Y, epochs=100)

# 모델 저장
model.save("model.h5")

 

3. Flask로 API 서버 작성: 저장된 모델을 불러와 Flask API로 예측 기능을 제공합니다:

from flask import Flask, request, jsonify
import tensorflow as tf
import numpy as np

# Flask 애플리케이션
app = Flask(__name__)

# 모델 로드
model = tf.keras.models.load_model("model.h5")

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    input_data = np.array(data['inputs'])
    predictions = model.predict(input_data).tolist()
    return jsonify({'predictions': predictions})

if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=5000)

4. Flask 서버 실행:

python app.py

서버가 실행되면, http://localhost:5000/predict에서 예측 API를 사용할 수 있습니다.

 

3. Spring Boot에서 Python API 호출

1. Spring Boot 프로젝트 생성:

Spring Initializer(https://start.spring.io/)에서 Maven 프로젝트를 생성하고 다음 의존성을 추가:

 - Spring Web

 - Spring Boot DevTools

 - Gson (JSON 처리)

 

2. Spring Boot에서 Python API 호출 코드 작성: Spring Boot에서 REST API를 호출하려면 RestTemplate 또는 WebClient를 사용합니다:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/api")
public class PythonIntegrationController {

    @PostMapping("/predict")
    public String getPrediction(@RequestBody Map<String, Object> inputData) {
        String pythonApiUrl = "http://localhost:5000/predict";

        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity<String> response = restTemplate.postForEntity(pythonApiUrl, inputData, String.class);

        return response.getBody();
    }
}

 

3. Spring Boot 실행:

  • Spring Boot 애플리케이션을 실행한 후, POST 요청으로 /api/predict에 데이터를 보내면 Python 모델 결과를 반환받을 수 있습니다.

 

4. 테스트 방법

1. Python API 테스트:

  • Postman 또는 curl을 사용해 Python API를 테스트:
curl -X POST -H "Content-Type: application/json" -d '{"inputs": [[5], [10]]}' http://localhost:5000/predict

2. Spring Boot API 테스트:

curl -X POST -H "Content-Type: application/json" -d '{"inputs": [[5], [10]]}' http://localhost:8080/api/predict

 

5. 심화 학습

  1. 에러 처리:
    • Spring Boot와 Python 간의 통신 오류를 처리하고 로그를 기록.
  2. Docker 통합:
    • Python Flask 서버와 Spring Boot 서버를 각각 Docker 컨테이너로 실행하여 관리.
  3. 성능 최적화:
    • Python API 호출 시 비동기 방식(WebClient)을 사용하여 성능 개선.
  4. 실시간 데이터 처리:
    • Kafka 등 메시지 큐를 사용해 대규모 데이터를 처리하는 환경 구성.

6. 학습 순서

  1. Python에서 AI 모델을 학습하고 저장하는 방법 이해.
  2. Flask를 활용해 모델을 REST API로 배포.
  3. Spring Boot에서 Python API를 호출해 결과를 통합.
  4. 심화 주제로 Docker, 비동기 처리, 클라우드 배포 등을 학습.

위 과정을 단계적으로 진행하며 실습하면 Python 모델과 Spring Boot를 통합하는 기술을 효과적으로 익힐 수 있습니다!

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기