분류 전체보기177 Spring Batch 프로젝트 테스트코드 최적화 방안 배경12월 4일 이후, Spring Batch 프로젝트의 테스트코드 양이 증가하며, OOM 문제로 인해, 테스트가 50분이 넘도록 돌아가지 않고 실패했습니다. 불과 100개도 안되는 테스트 였음에도 말이죠!! 무언가 이상했습니다. webapp은 300개가 넘는 테스트가 돌고 있음에도, 동일한 Heap Memory 스펙 하에서, 더 빠른 시간 안에 처리가 됐기 때문입니다.뿐 만 아니라, 테스트가 중간에 끝났음에도 Heap Memory Size는 줄어들지 않고 있었습니다. 이로써, Batch 쪽 테스트코드 로직에 문제가 있음을 직감할 수 있었습니다.문제주요 이슈 요약Application Context 캐싱이 제대로 되지 않아 테스트 성능 저하불필요한 의존성 주입으로 전체 컨텍스트를 로드하는 비효율적인 테스트.. 카테고리 없음 2024. 12. 21. [Spring Batch] ItemReader에 대해 알아보자 Spring Batch에서 ItemReader는 데이터를 읽어오는 역할을 담당하며, 데이터 읽기 방식에는 Cursor 기반과 Page 기반의 두 가지 주요 옵션이 있습니다. 이 두 방식은 데이터 접근과 메모리 사용 방식에서 차이가 있으며, 각각의 특징과 사용 사례가 있습니다.1. Cursor 기반 ItemReaderCursor 기반 접근은 데이터베이스 커서를 열어 한 번에 한 개의 레코드를 순차적으로 읽어옵니다.특징순차적 읽기:데이터를 하나씩 읽기 때문에 메모리 소비가 적습니다.데이터베이스 커서가 열려 있는 상태에서 작업을 진행.지속적인 연결:데이터베이스와의 연결이 작업이 완료될 때까지 유지됩니다.커밋 주기에 따라 트랜잭션이 갱신될 수 있음.장점메모리 효율적: 한 번에 한 레코드만 처리.간단한 설정: 대.. 카테고리 없음 2024. 12. 1. [AWS] AWS Batch 설정 가이드 AWS Batch를 설정하고 사용하는 과정은 여러 단계로 나뉘며, 클러스터를 구성하고 작업 대기열을 생성하며 작업 정의를 설정하는 것이 핵심입니다. 아래는 AWS Batch 설정을 위한 단계별 가이드입니다.1. AWS Batch 환경 구성(1) 컴퓨팅 환경 생성AWS Batch에서 작업을 실행할 인프라 환경입니다. 이를 통해 EC2 인스턴스를 자동으로 시작하고 관리할 수 있습니다.AWS Management Console에서 AWS Batch 서비스로 이동.Compute Environments로 이동 후 Create 버튼 클릭.Managed Environment를 선택 (AWS Batch가 인프라를 자동으로 관리).Instance Types: 작업에 필요한 EC2 유형을 선택하거나 특정 유형을 지정.Des.. Infra/AWS 2024. 12. 1. [Batch] Spring Batch Scope의 개념과 Job Parameter 사용 방법 Spring Batch Scope란Spring Batch에서 Scope란 개념이 존재합니다. Scope는 빈의 생성 및 관리와 관련된 범위를 정의하는 개념으로, _작업(job) 실행 과정에서 특정 컨텍스트나 상태를 유지해야 하는 경우에 사용_됩니다.Spring Batch에선 모든 빈을 처음에 한 번에 생성하지 않고, 특정 Scope 내에 있는 빈을 실행 시점에 생성합니다. 이렇게 하는 이유는 배치 애플리케이션을 효율적으로 동작시키기 위함입니다. Scope를 활용하여 실행 시점에 빈을 생성하는 것이, 그렇지 않았을 때보다, 어떤 면에서 더 효율적일까요?Spring Batch에서 실행 시점에 빈을 생성하는 이유1. 동적 데이터 및 실행 환경의 요구 처리배치 작업은 실행 시점마다 다른 JobParameters.. Framework/Spring 2024. 11. 27. [Batch] 배치 애플리케이션의 이해와 Spring Batch 기본 활용법 1. 배치의 정의배치(Batch)는 대량의 데이터를 정기적이고 반복적으로 처리하는 프로그램입니다. 주로 사용자가 없는 새벽 시간대에 실행되며, 대규모 데이터의 처리, 집계, 변환 등 비즈니스 로직을 실행하는 데 활용됩니다. 2. 배치 애플리케이션이 필요한 이유2.1 WAS와 배치의 구분WAS (Web Application Server)는 사용자 요청을 실시간으로 처리하는 서버입니다.하지만 배치와 같이 대규모 데이터를 처리하거나 비즈니스 로직을 길게 실행해야 하는 작업은 WAS에서 실행하기 적합하지 않습니다.주요 이유는 다음과 같습니다:성능 문제: 실시간 요청을 처리하는 서버에서 대량 데이터 작업을 수행하면, 응답 속도가 느려져 사용자 경험이 저하됩니다.안정성 문제: 장시간 실행되는 작업은 서버 부하를 유.. Framework/Spring 2024. 11. 24. [기타] Tech Spec으로 프로젝트 성공 확률 높이기 Tech Spec으로 프로젝트 성공 확률 높이기대규모 프로젝트에 참여하거나 신규 기능을 개발할 때 Tech Spec을 작성하는 것은 프로젝트의 성공 확률을 높이는 중요한 과정입니다. Tech Spec은 단순한 문서가 아닌, 프로젝트의 "설계도"라고 할 수 있습니다. 프로젝트의 핵심 목표부터 상세 계획, 리스크 관리, 예상 결과까지 한눈에 파악할 수 있도록 구성되어 있죠. 이 글에서는 Tech Spec이 무엇인지, 왜 중요한지, 어떤 방식으로 작성하면 좋은지 소개하고자 합니다.Tech Spec이란?Tech Spec은 'Technical Specification'의 줄임말로, 특정 프로젝트의 기술적 설계를 문서화한 것을 말합니다. Tech Spec은 프로젝트의 요약, 배경, 목표와 범위, 계획, 고려 사항,.. 기타 2024. 11. 10. PresignedUrl 활용하여 업로드 API 개선 및 서버 부하 줄이기 서론 (들어가기 앞서)현재 제가 재직 중인 회사는 온라인 강의 서비스와 커뮤니티 서비스를 운영합니다. 저희 고객 분들은 온라인으로 줌 강의를 수강하고, 모임 인증 사진을 커뮤니티에 사진을 업로드하곤 합니다. 문제는 모임이 끝나는 시점에 여러 명의 사용자가 동시 다발적으로, 동시에 업로드를 진행한다는 점입니다. 이로 인해 짧은 시간에 서버로 부하가 몰렸습니다.현재 AWS S3 서비스를 이용 중인데, 기존에는 S3로 파일을 업로드할 때 WAS를 경유하는 구조였습니다. 특히 요청이 밀리다보면 뒤 요청은 TimeOut 에러로 인해, 아예 처리되지 않는 문제가 발생했습니다. 프론트엔드 서버에서부터 백엔드 서버, S3로 업로드 하는 각 단계에서 네트워크 송/수신을 처리하기 위한 시간이 들며, 업로드를 처리하는 평균.. Infra 2024. 10. 22. 윈도우함수(Window Function)로 중복 닉네임 처리하기 서론 (들어가기 앞서)기획자님 : 상용 DB에 중복 닉네임이 존재합니다. 중복된 닉네임을 뒤에 가입한 순서대로 숫자 001, 002, 003 등으로 붙여주세요.얼마 전, 회사에서 중복 닉네임을 일괄 변경하는 작업에 대한 요청이 있었습니다. 이미 기존에 중복된 닉네임에 가입 순서를 기준으로 001, 002, 003 뒤에 숫자를 붙여서 수정하는 것이 요구사항이었습니다. 물론 실제로는 이것보다 친절하고 자세하게 설명해주셨죠. 순간 고민이 됐습니다. 쿼리로 한 번에 처리할 순 없을까? 🤔 찾아 보니, 윈도우 함수 내 순위함수 기능을 사용하면 쉽게 값을 정해줄 수 있었습니다 🥹 그래서 이번 시간에는 윈도우함수의 순위함수를 사용하여, 위 요구사항에 만족하는 쿼리를 작성하는 방법에 대해 함께 알아보도록 하겠습니다.. DB 2024. 9. 27. [Spring] Spring Boot 환경설정 가이드 1. Spring Initializr 활용하여 Spring Boot 프로젝트 생성하기1.1 프로젝트 정보(스펙) 설정하기Spring Initializr는 Spring Boot 프로젝트를 빠르고 쉽게 생성할 수 있는 도구입니다. 먼저, Spring Initializr 웹 사이트에 접속합니다. 다음은 프로젝트 설정의 각 요소에 대한 설명입니다.Project: Maven 또는 Gradle 빌드 시스템 중 하나를 선택합니다. 일반적으로 Gradle을 많이 사용합니다.Language: Java, Kotlin, Groovy 중 선택합니다. 대부분 Java를 선택합니다. Spring Boot Version: 최신 버전 또는 안정적인 버전을 선택하는 것이 좋습니다.Project Metadata:Group: 보통 패키지.. Framework/Spring 2024. 9. 23. [Spring] Spring 프레임워크란 무엇인가? 서론오늘은 자바 백엔드 진영의 대표적인 프레임워크인 스프링에 대해서 알아보도록 하겠습니다.본론스프링의 어원과 탄생 배경스프링(Spring)이란 영어로 봄을 말합니다. 왜 봄이라고 이름을 지었을까요? 스프링 프레임워크가 등장하기 전인 2000년대 초로 돌아가보면, EJB(Enterprise Java Beans)라는 자바 기업용 애플리케이션 프레임워크를 활용하여 어플리케이션 개발을 했습니다. EJB는 당시 자바의 표준이었죠. 하지만 너무 무겁고 복잡하고 비효율적이었습니다. 이에 불만을 느낀 로드 존슨이란 개발자가 EJB 없이도 고품질의 애플리케이션을 만들 수 있다는 것을 "Expert One-on-One J2EE Design and Development"란 책을 통해 증명해냅니다.로드 존슨은 순수한 자바 코.. Framework/Spring 2024. 9. 20. [Spring] IoC와 DI란 무엇인가? 제어의 역전 (IoC, Inversion of Control)개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부(프레임워크)에 위임하는 설계 원칙을 제어의 역전이라고 한다.관련 용어빈 (Spring Bean)스프링이 IoC 방식으로 관리하는 오브젝트를 뜻한다. 자바 빈과 구분 짓기 위해, 스프링 빈이라고도 부른다.참고로 스프링 내 모든 오브젝트가 전부 빈이 아니다. 그 중에서 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.빈 팩토리 (Bean Factory)스프링의 IoC를 담당하는 핵심 컨테이너를 말한다.스프링 컨테이너의 최상위 인터페이스로, 스프링 빈을 관리하고 조회하는 역할을 담당한다. 대표적으로 getBean() 메소드를 제공한다.애플리케이션 컨텍스트 (Applic.. Framework/Spring 2024. 9. 20. [Test] Spring Boot 환경에서의 유닛테스트와 통합테스트, 슬라이스 테스트 서론오늘은 Spring Boot 환경에서 유닛 테스트와 통합 테스트, 각각의 테스트 과정에서 활용되는 어노테이션과 메서드들은 무엇이 있는지 정리해보겠습니다.대상독자테스트코드를 처음 작성해보시는 분들, Slice Test를 처음 들어보시는 분들, 테스트코드를 하고 싶지만 심리적인 장벽 때문에 아직 시도해보지 못한 분들에게 이 글을 추천합니다.이론유닛 테스트(Unit test)와 통합 테스트 (Integration test)꼭 짚고 넘어가야 하는 유닛 테스트와 통합 테스트의 정의에 대해서 알아봅시다.유닛 테스트보통 개발자가 테스트 코드를 짠다고 하면, 유닛 테스트 짜는 것을 말합니다. 코드 레벨에서의 테스트를 하며, 특정 함수나 클래스와 같이 작고 고립된 코드의 기능을 확인하는 자동화된 테스트를 진행합니다... Framework/Spring 2024. 9. 19. 이전 1 2 3 4 ··· 15 다음 반응형