Spring Cloud Function 시작하기

Hazel·2024년 8월 21일
0
post-thumbnail

Spring Cloud Function이란?

https://spring.io/projects/spring-cloud
위의 공식문서의 글을 번역해봤다.

Spring Cloud Function은 비즈니스 로직을 함수 형태로 구현하고 다양한 환경에서 실행할 수 있도록 지원하는 Spring 프로젝트입니다. 이 프로젝트의 주요 목표는 다음과 같습니다 :

  1. 비즈니스 로직을 함수로 구현하여 특정 런타임 환경에 종속되지 않도록 합니다. 이를 통해 동일한 코드를 웹 엔드포인트, 스트림 프로세서, 또는 태스크로 실행할 수 있습니다.
  2. 서버리스 환경과 독립적인 프로그래밍 모델을 제공하며, 로컬 또는 PaaS에서 독립적으로 실행할 수 있습니다.
  3. 서버리스 환경에서도 Spring Boot의 기능(자동 구성, 의존성 주입, 메트릭스)을 활용할 수 있게 합니다.
  4. 전송 세부 사항과 인프라를 추상화하여 개발자가 익숙한 도구와 프로세스를 유지하면서 비즈니스 로직에 집중할 수 있도록 지원합니다.

프로젝트 생성하기

spring initialzr을 활용해서 spring 프로젝트를 생성한 후 의존성을 추가해줘도 되고, IDE 내부에서 spring 프로젝트를 생성한 후에 의존성을 추가해줘도 된다.

이런식으로 먼저 프로젝트 생성해준 후 build.gradle 파일로 이동해서 의존성을 추가해준다.

의존성 추가하기

나는 build.gradle 파일을 다음과 같이 설정해줬다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.3.2'
	id 'io.spring.dependency-management' version '1.1.6'
	id 'com.github.johnrengelman.shadow' version '8.1.1'

}

group = 'com.[NAME]'
version = '0.0.1-SNAPSHOT'

java {
	toolchain {
		languageVersion = JavaLanguageVersion.of(17)
	}
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'


	// PostgreSQL
	implementation 'org.postgresql:postgresql'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

	// Cloud Function 의존성 추가
	//implementation 'org.springframework.cloud:spring-cloud-function-adapter-aws:4.1.3'
	//implementation 'org.springframework.cloud:spring-cloud-starter-function-web:4.1.3'

	// AWS Lambda
	implementation 'com.amazonaws:aws-lambda-java-core:1.2.1'
	implementation 'com.amazonaws:aws-lambda-java-events:3.11.0'
	implementation 'com.amazonaws.serverless:aws-serverless-java-container-springboot3:2.0.2'

	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'org.postgresql:postgresql'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
	useJUnitPlatform()
}


// Shadow JAR 설정
shadowJar {
	archiveClassifier.set('aws')
	mergeServiceFiles()
	append('META-INF/spring.handlers')
	append('META-INF/spring.schemas')
	append('META-INF/spring.tooling')
}

테스트용 함수

나는 소문자를 입력하면 대문자로 변환해주는 기본 테스트 코드로 제대로 실행되는지 테스트 했다.

@SpringBootApplication
public class SpringProjectApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringProjectApplication.class, args);
	}


	@Bean
	public Function<String, String> uppercase() {
		return value -> value.toUpperCase();
	}
}

결과

postman으로 제대로 돌아가는지 테스트

성공!

profile
이것저것 학습 기록장

0개의 댓글