백엔드 개발자가 Spring Boot 사용하며 겪는 흔한 문제 모음.zip
#Spring Boot
#백엔드
#Spring
1. 기본기가 없는 백엔드 개발자가 Spring Boot를 사용할때 생기는 문제점
기본기가 없는 백엔드 개발자가 Spring Boot를 사용하면 다양한 문제가 생기는데요! 어떤 것이 있는지 살펴볼까요?
프로젝트 구조 이해 부족 : Spring Boot 프로젝트의 디렉토리 구조와 파일들의 역할을 이해하지 못해 코드가 복잡해질 수 있습니다.
의존성 관리 문제 : Maven이나 Gradle을 통한 의존성 관리를 이해하지 못하면 필요한 라이브러리를 제대로 추가하거나 관리하지 못할 수 있습니다.
Bean 관리 및 의존성 주입(DI) 이해 부족 : Spring의 핵심 개념인 DI와 IoC 컨테이너를 이해하지 못하면 Bean의 생명주기나 올바른 객체 주입에 문제가 생길 수 있습니다.
설정 파일 관리 어려움 : application.properties나 application.yml 파일을 통해 설정을 관리하지 못하고, 하드코딩을 남발할 수 있습니다.
RESTful API 설계 및 구현 문제 : RESTful API의 기본 원칙을 이해하지 못해 비효율적이거나 일관성 없는 API를 설계할 수 있습니다.
데이터베이스 연동 문제 : spring boot 사용시 JPA/Hibernate와 같은 ORM 도구를 제대로 이해하지 못해 비효율적인 쿼리나 데이터베이스 성능 저하를 초래할 수 있습니다.
보안 문제 : 백엔드에 Spring Security를 활용한 인증 및 권한 관리를 제대로 구현하지 못해 보안 취약점을 남길 수 있습니다.
이것 말고도 기본기를 탄탄히 다지지 않으면 문제들이 발생합니다.
2. 실제 백엔드 개발자가 spring boot 구현하면서 어떤 어려움을 겪을지 & 답변까지 모아옴!
Q. Spring Boot에서 application.properties 및 application.yml 파일의 역할과 사용을 모르겠어요 ㅜㅜ
A. Spring Boot에서 application.properties 및 application.yml 파일은 애플리케이션을 구성하는 데 필수적입니다. 좀더 세부적으로 설명드리면 두 파일 모두 서버 포트, 데이터베이스 연결, 로깅 수준 등과 같은 다양한 Spring Boot 기능에 대한 설정을 정의할 수 있습니다.
사용형식은 아래와 같습니다.
– application.properties는 간단한 키-값 쌍 형식을 사용합니다.
– application.yml은 더 읽기 쉽고 계층적 데이터 구조를 지원하는 YAML(YAML Ain’t Markup Language)을 사용합니다.
ex) properties 파일 사용 예
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.org.springframework=DEBUG
ex) yaml 파일 사용 예
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: secret
logging:
level:
org.springframework: DEBUG
장점을 비교하면!
– 가독성: YAML 파일은 일반적으로 읽기가 더 쉽고 복잡한 구성에 더 적합합니다.
– 단순성: 속성 파일은 더 간단하며 간단한 키-값 구성에 널리 사용됩니다.
Q. spring boot에서 데이터 교환을 위한 데이터 형식으로 XML과 JSON의 차이점을 모르겠어요!
A. XML(eXtensible Markup Language)과 JSON(JavaScript Object Notation)은 시스템 간 데이터 교환에 널리 사용되는 두 가지 데이터 형식입니다.
– XML 문서는 각 요소가 태그로 묶인 요소 트리로 구성됩니다.
– JSON은 데이터를 이름/값 쌍(종종 객체라고도 함)의 컬렉션과 순서가 지정된 값 목록(배열)으로 구성합니다.
예를 들어 사람(person=객체)의 정보를
– XML 데이터 구조로 표현하면 아래 와 같습니다.
<person>
<name>John Doe</name>
<age>30</age>
<address>
<street>Main Street</street>
<city>Springfield</city>
</address>
</person>
– JSON 데이터 구조로 표현하면 아래 와 같습니다.
{
“name”: “John Doe”,
“age”: 30,
“address”: {
“street”: “Main Street”,
“city”: “Springfield”
}
}
XML은 문서 중심 데이터와 복잡한 계층 구조에 강력한 반면,
JSON은 특히 웹 및 모바일 애플리케이션에서 경량 데이터 교환에 적합합니다.
Q. Spring Boot에서 JPA를 사용했는데, N+1 문제가 발생했어요!
A. N+1 문제에는 여러방법을 시도해봐야합니다.
첫번째, @EntityGraph 어노테이션을 사용해 필요한 연관관계를 미리 로드해보세요. 지연 로딩(LAZY)으로 인한 N+1 문제를 해결할 수 있을 겁니다.
두번째, JPA의 Fetch 전략을 LAZY에서 EAGER로 변경하면 연관 엔티티를 즉시 로드할 수 있어요. 필요한 데이터를 한번에 가져올 수 있어, N+1 문제가 해결될거에요.
세번째, QueryDSL 라이브러리를 사용하여 복잡한 쿼리를 작성해보세요. 데이터만 선별적으로 로드할 수 있을거에요.
네번째, Spring Data Projections 기능을 활용하여 필요한 데이터만 선택적으로 로드해, 불필요한 데이터 로드를 방지해보세요.
다섯번째, 애플리케이션의 성능을 모니터링하여 N+1 문제가 발생하는 지점을 찾아내 지속적인 성능 최적화 수행해보세요!
3. 백엔드 개발자가 spring boot 구현하며 발생하는 문제 & 해결방법, 하나하나 검색해 찾기 힘들다면?
사실 앞선 답변은 모두 백엔드 도사 박매일님이 답변해주신건데요! 1만 spring boot 포기자들을 가르치며 만드신 TPC활용법으로 뇌에 저절로 새겨지도록 알려주시는 것으로 유명하시죠! 백엔드 도사 박매일 강사님의 spring boot 시각자료 또한 보기만 해도 저절로 구조가 보일 만큼 완벽한데요! 이런 화려한 자료뿐만 아니라, 수강평 + 친절함까지 만점이신 강사님입니다. 백엔드 개발자분들! spring boot 구현에 한번이라도 어려움을 겪으셨다면? 이 강의로 모조리 해결해보세요!
▼ 뇌에 새겨지는 Spring Boot 강의 바로가기 ▼
https://bit.ly/4d33Np1