이 글은 51 Java -Spring Boot- Best practices for Application Developers 칼럼을 읽고 앞으로 한 번씩 해봐야겠다는 내용들을 요약한 글입니다.

 

참고: 51 Java - Spring Boot - 애플리케이션 개발자를 위한 모범 사례

 

51 Java -Spring Boot- Best practices for Application Developers

Hi All ,

connect2grp.medium.com

 

Spring Boot를 효과적으로 사용하기 위해 시도할 내용들 

1. Gradle을 이용한 종속성 관리 및 사용

종속성은 애플리케이션 크기를 늘리고 보안 취약성 또는 기타 문제를 야기할 수 있습니다. 애플리케이션에 실제로 필요한 종속성만 포함되도록 관리합니다.

 

2. 현명한 캐싱 사용

DB로의 이동 횟수를 줄이기 위해 캐싱을 사용하고, 이를 통해 애플리케이션의 성능을 향상시킬 수 있습니다.

캐시와 DB의 데이터가 일치하는지 확인해야 하며, 캐시 모니터릥을 시도해봐야 합니다.

 

3.  Logback에 대한 이해 & 일관된 로깅 형식 사용

 Log4j, Slg4j 또는 Logback과 같은 도구를 사용하여 애플리케이션을 모니터링하고 기록합니다. logback을 이용해 애플리케이션의 메세지를 기록하며 문제를 해결하고 성능 병목 현상을 확인할 수 있습니다.

이 때 발생하는 로깅 메세지는 손쉬운 구문 분석을 할 수 있도록 일관된 형식을 사용합니다.

 

4. 단위 및 통합 테스트 작성

Junit5 및 Mockito와 같은 도구를 사용해 애플리케이션에 대한 단위 및 통합테스트를 작성합니다. 이를 통해 버그를 조기에 발견하고 응용 프로그램이 예상대로 작동하는지 확인할 수 있습니다.

 

5. 메세지 브로커/메세지 큐 사용 

RabbitMQ 또는 Apache Kafka와 같은 메시지 브로커를 사용하여 구성 요소간 비동기식 통신이 가능하도록 구현해 봅니다.

를 통해 애플리케이션의 확장성과 안정성을 향상시킬 수 있습니다.

 

6. 프로파일러 사용 ( 데이터베이스 프로파일러 사용 포함) 

애플리케이션의 성능을 개선해야 하는 경우 JProfiler 또는 YourKit과 같은 프로파일러를 사용하는 것이 좋습니다.

데이터베이스 프로파일러에는 MySQL Workbench를 사용해봅니다. 

 

7. 코드 검토 도구 사용

Gerrit 또는 Review Board와 같은 코드 검토 도구를 사용하여 코드의 품질을 개선합니다. 코드 검토 도구는 코딩 오류와 잠재적인 버그가 생산에 들어가기 전에 파악하는 데 도움이 될 수 있으며 코드 디자인을 개선하는 데도 도움이 될 수 있습니다.

 

8. 통합/배포 도구 사용

Jenkins, github action, Ansible과 같은 devops를 위한 통합/배포 도구를 사용해 프로세스를 자동화 시킵니다.

 

9. 컨테이너화 도구 사용

Docker와 Kubernetes와 같은 컨테이너화 도구를 사용함으로서 애플리케이션의 이식성과 확장성을 향상시킬 수 있습니다.

 

10.  부하 테스트 도구 사용 

부하 상태에서 애플리케이션의 성능을 테스트해야 하는 경우 JMeter 또는 Gatling과 같은 부하 테스트 도구를 사용하는 것이 좋습니다.

ngrinder도 있으니 이를 이용해 성능 이슈가 존재하는지 확인해봅니다.

 

11. 구성 관리 도구 사용

구성 관리 도구 사용 : Chef 또는 Puppet과 같은 구성 관리 도구는 애플리케이션 및 해당 종속성의 구성을 관리하는 데 도움이 될 수 있습니다. 구성 관리 도구를 사용하면 다양한 환경에서 애플리케이션이 일관되고 배포 및 관리가 용이하도록 할 수 있습니다.

 

12. Api 문서에 Swagger 사용

Swagger는 Spring Boot 애플리케이션에 대한 API 문서를 생성하는 데 사용할 수 있는 도구입니다.

 

13. Actuator 사용

Spring Boot Actuator는 Spring Boot 애플리케이션을 모니터링하고 관리하는 데 사용할 수 있는 도구입니다. Actuator는 애플리케이션을 모니터링하고 관리하는 데 도움이 되는 여러 기능을 제공합니다. Actuator는 애플리케이션의 상태에 대한 정보를 제공하는 /health 엔드포인트와 같이 애플리케이션의 상태와 성능을 모니터링하는 데 사용할 수 있는 여러 엔드포인트를 제공합니다.

 

14. AOP 사용

AOP(Aspect-Oriented Programming)는 Spring Boot 애플리케이션에서 교차 절단 문제를 모듈화하는 데 사용할 수 있는 프로그래밍 패러다임입니다. 교차 편집 문제는 로깅, 보안 또는 트랜잭션과 같은 애플리케이션의 여러 부분에서 사용되는 기능입니다.

 

15. 분산 추적 사용

분산 추적은 마이크로 서비스 기반 애플리케이션과 같은 분산 시스템을 통해 요청 흐름을 추적하는 데 사용할 수 있는 기술입니다. 분산 추적을 사용하면 클라이언트에서 서버까지 요청의 전체 여정을 보고 그 과정에서 요청이 처리되는 방식을 이해할 수 있습니다. Spring Boot 애플리케이션에서 분산 추적을 사용하려면 Zipkin 또는 Jaeger와 같은 도구를 사용할 수 있습니다. Spring Cloud Sleuth는 Spring Boot 애플리케이션에서 요청을 추적하는 데 사용할 수 있는 도구입니다. Sleuth는 요청을 추적하고 애플리케이션에서 처리되는 방식을 이해하는 데 도움이 되는 다양한 기능을 제공합니다. 이러한 도구는 코드를 계측하고 추적 데이터를 중앙 서버로 보내는 데 사용할 수 있는 라이브러리를 제공합니다. 그런 다음 중앙 집중식 서버를 사용하여 추적 데이터를 보고 분석할 수 있습니다.

+ Recent posts