안녕하세요! 루브릭랩스 엔지니어 벨입니다.
요즘 많은 분들이 AI와 협업해서 업무를 자동화하는 데 관심이 많으신데요, 자동화를 통해 업무 효율을 크게 높일 수 있고 특히 반복적인 작업에 드는 시간을 확 줄일 수 있어 정말 유용해요.
AI 개발에는 주로 Python이 많이 쓰이는데, Python은 간단하고 유연한 문법 덕분에 누구나 쉽게 다룰 수 있을 뿐만 아니라, AI와 머신러닝 라이브러리도 다양해서 자동화 작업에 정말 유리해요.
안정적인 API 구축에는 Java의 Spring Boot가 많이 사용되죠. Spring Boot는 복잡한 설정 없이도 빠르게 웹 애플리케이션을 개발할 수 있도록 도와주고, 대규모 시스템에서도 안정적인 성능을 제공하기 때문에 엔터프라이즈 환경에서 특히 유리합니다.
그래서 오늘은 Python과 Spring Boot를 활용한 간단한 예제를 준비해 봤습니다.
요즘 커피나 차, 에너지 음료로 카페인을 자주 섭취하는 분들이 많으시죠? 저도 예외는 아닙니다.
카페인은 집중력과 피로 해소에 도움이 되지만, 과도하게 섭취할 경우 불면증이나 긴장감, 심장 두근거림 같은 부작용을 유발할 수 있습니다.
특히 주말에 과다 섭취하면 월요일에 피로가 몰려오기도 하죠. 그래서 이번 예제로 카페인 섭취량 예측 모델을 만들어 보려고 합니다.
Spring Boot와 Python을 연동해 매일의 카페인 섭취 데이터를 기반으로 다음 주 예상 섭취량을 예측하는 과정을 함께 살펴보겠습니다.
-----
예제에서는 사용자의 일별 카페인 섭취량을 기반으로 다음 주 예상 카페인 섭취량을 예측하는 모델을 구축합니다.
이 예측을 통해 사용자는 매일의 카페인 소비 습관을 점검하고, 과도한 섭취를 줄일 수 있습니다.
예를 들어, 카페인 섭취가 많은 날이 지속되면 예측 결과를 통해 섭취량을 줄이는 데 도움이 될 수 있습니다.
Spring Boot와 Python 연동에는 HTTP 통신 방식과 프로세스 호출 방식이 있지만, 이번 예제에서는 프로세스 호출 방식을 선택했습니다. 프로세스 호출 방식이 적합한 이유는 다음과 같습니다.
이번 예제에서는 Python 스크립트로 간단한 데이터의 흐름에 따라 미래의 값을 예측하는 방법을 구현하고, Spring Boot에서 이 스크립트를 호출하여 예측 결과를 제공합니다.
Python은 머신러닝 모델 학습과 예측을 담당하고, Spring Boot는 웹 API를 통해 사용자 요청을 받아 Python 스크립트를 호출하는 역할을 합니다.
먼저 Python을 사용하여 간단한 예측 모델을 구현해보겠습니다.
예제 데이터는 일별 카페인 섭취량 데이터로, 매일 증가하거나 감소하는 카페인 소비 패턴을 기반으로 다음 주 소비량을 예측합니다.
# predict_caffeine.py
import pandas as pd
from sklearn.linear_model import LinearRegression
import json
import sys
# 예제 데이터: 일별 카페인 섭취량 (mg)
data = pd.DataFrame({
'day': [1, 2, 3, 4, 5, 6, 7],
'caffeine_intake': [150, 200, 180, 220, 170, 210, 160]
})
# 모델 학습
X = data[['day']]
y = data['caffeine_intake']
model = LinearRegression().fit(X, y)
# 예측 함수 정의
def predict_next_week(day):
prediction = model.predict([[day]])
return json.dumps({'day': day, 'predicted_caffeine_intake': prediction[0]})
# 스크립트 실행 시 인자로 day 값을 받아 예측 결과 반환
if __name__ == "__main__":
day = int(sys.argv[1]) # 입력으로 day를 받음 (다음 주 첫날을 의미)
print(predict_next_week(day))
이 Python 스크립트는 데이터의 흐름에 따라 미래의 값을 예측하는 방법을 사용하여 일별 카페인 섭취 데이터를 학습하고, 특정 날의 예상 카페인 섭취량을 예측하는 기능을 제공합니다. 스크립트는 JSON 형식으로 예측 결과를 반환합니다.
Spring Boot에서 Python 스크립트를 호출하여 예측 결과를 받아오는 코드를 작성해보겠습니다. Runtime.getRuntime().exec() 메서드를 통해 Python 스크립트를 실행하고, 결과를 받아 JSON 형식으로 반환합니다.
java
// CaffeinePredictionController.java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.io.BufferedReader;
import java.io.InputStreamReader;
@RestController
public class CaffeinePredictionController {
@GetMapping("/predict")
public String predictCaffeineIntake(@RequestParam int day) {
try {
// Python 스크립트를 호출하여 예측 결과를 받아옴
Process process = Runtime.getRuntime().exec("python3 predict_caffeine.py " + day);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder output = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
output.append(line);
}
process.waitFor();
return output.toString(); // 예측 결과를 JSON 형태로 반환
} catch (Exception e) {
e.printStackTrace();
return "{\"error\":\"Python script execution failed\"}";
}
}
}
이 코드는 /predict 엔드포인트로 HTTP GET 요청을 받으면, Python 스크립트를 호출해 day 파라미터에 해당하는 날의 예상 카페인 섭취량을 예측합니다.
Python 스크립트에서 반환된 JSON 데이터를 그대로 전달하여 클라이언트가 이를 활용할 수 있게 합니다.
이 포스팅을 통해 Spring Boot와 Python을 프로세스 호출 방식으로 연동하여 AI 기반 데이터 분석을 자동화하는 방법을 살펴보았는데요.
오늘 소개한 방법은 간단하고 빠르게 설정 할 수 있어, 로컬 테스트와 초기 개발에 아주 유용하게 작용합니다.
위의 예시를 토대로 여러분들이 가지고 있는 고민 혹은 업무 효율 향상 등에도 적용할 수 있습니다.
다음 포스팅에서는 생성형 AI를 활용한 Spring Boot와 Python 연동을 주제로 다시 찾아올게요!IT 개발에 대한 궁금증이 있으시다면, 언제든지 루브릭랩스에 문의해주세요;)
읽어주셔서 감사합니다.