일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- etf
- 제태크
- 금리인상
- 무디스
- 주식
- 잉여현금흐름
- FCF
- 프로그래머스
- 주린이
- 알고리즘
- 오버라이딩
- XLF
- 인플레이션
- 기업분석
- 배당성장
- 다형성
- object
- Java
- S&P500
- javascript
- 미국주식
- 현금흐름표
- StringBuffer
- mco
- 그리디 알고리즘
- 금리인하
- 접근제어자
- 객체지향
- 백준
- 자바
- Today
- Total
목록Spring (57)
오늘의하루
개선 사항 프로세스 단계 간소화: 불필요한 프로세스 단계를 제거하고, 필요한 작업을 더 효율적으로 처리하기 위해 프로세스를 재구성했습니다. 이로써 프로세스의 실행 속도를 향상시켰습니다. String 객체 생성 최소화: 불필요한 String 객체 생성을 제거하고, 메모리 사용을 최적화하기 위해 InputStream을 활용하여 데이터를 처리하도록 수정했습니다. 버퍼 크기 증가: 프로세스의 효율성을 높이기 위해 버퍼 크기를 4096byte로 증가시켰습니다. 이는 프로세스의 데이터 처리량을 늘려서 성능을 향상시켰습니다. 불필요한 IO 작업 제거: 불필요한 IO 작업을 최소화하여 메모리 사용을 줄였습니다. 이는 프로세스의 부하를 감소시켜서 전반적인 성능을 향상시켰습니다. 환경 설정 Apache JMeter ver..
개선 사항 첨부 파일을 디스크에 저장한 후 분석하던 기존의 방식에서 메모리로 처리하도록 변경하여, 데이터를 일부분씩 분할하여 작은 메모리에서도 처리할 수 있도록 설계를 변경했습니다. 환경 설정 Apache JMeter version : 5.6.3 Spring boot version : 3.2.2 Java version : 17 시나리오 JMeter를 사용하여 100명의 가상 사용자가 동시에 100MB 크기의 zip 파일을 서버에 첨부하고, 해당 파일을 분석한 후 결과를 반환하도록 시나리오를 작성했습니다. 테스트 결과 부하 테스트를 수행한 결과, 사용자의 요청 후 응답까지의 평균 속도와 서버가 처리할 수 있는 양에 집중해야 한다는 것을 확인했습니다. Throughput 비교 1차 테스트 : 10.2/min..
프로젝트 소개 SourceCode.io 프로젝트는 클라이언트가 제공한 zip 파일을 분석하여 원하는 형태의 문자를 추출하여 문서화하고, 동시에 해당 zip 파일의 구조를 반환합니다. 또한, 커스텀 빌드 프로세스를 통해 서버에 zip 파일 형태로 소스 코드를 전송한 후, 해당 코드에 한글이 있는지 확인하고 한글의 개수와 위치를 클라이언트에게 반환합니다. 목표 및 배경 Apache JMeter를 사용하여 SourceCode.io 프로젝트의 부하 테스트를 수행하여 성능을 평가하고 사용자가 원활하게 이용할 수 있도록 성능을 향상시키는 것이 목표입니다. 환경 설정 Apache JMeter version : 5.6.3 Spring boot version : 3.2.2 Java version : 17 시나리오 JMe..
오류 발생 시점 Spring Security와 JWT를 통해 인증 인가를 진행하려고 했고 Jwt Filter에서 @Transactional를 사용했기 때문에 발생하였다. 원인 정확한 원인은 아닌 것 같지만 @Transactional 어노테이션을 사용하면 스프링은 해당 메서드를 실행할 때 트랜잭션을 시작하려고 하지만, 이미 실행 중인 트랜잭션이 없기 때문에 오류가 발생할 수 있습니다. 느낀점 내가 @Transactional을 적용한 곳은 단순히 데이터를 조회하는 용도이므로 트랜젝션이 필요없다. 트랜젝션 관리는 데이터를 변경하는 작업에만 필요하다는건 알고 있었지만 깜빡하고 썻던거 같다. @Transcational은 일반적으로 서비스 계층에서 DB 트랜젝션을 처리하는데 사용된다. 그리고 필터에서 DB에 직접 ..
예외 발생 이유 이 예외는 Fetch Join을 할 때 발생하게 되는데 원인은 2개 이상의 컬렉션이 있는 상태에서 Fetch Join을 하는 경우에 발생하게 된다. 어쩌다 발생했을까? C Entity와 B Entity는 N:1 관계이고 B Entity와 A Entity는 N:1 관계이고 모두 지연 로딩(LAZY)로 되어있다. A Entity에서 특정 Id값으로 조회하여 조회되는 데이터를 Json 형식으로 보내려고 했다. 처음에 별 생각 없이 A Entity 자체를 보내게 되었는데 이때 Stack Overflow가 발생하고 넘어간 데이터를 보니 재귀현상이 발생하고 있었고 이 문제를 해결하기 위해 Fetch Join을 사용하면서 발견했다. 해결 방안 쿼리를 분리하자! 여러 개의 컬렉션을 가져와야 할 경우, ..
예외 발생 이유 세션이 사라진 후 지연 로딩(LAZY) 상태에서 프록시 초기화가 불가능하기 때문에 발생하는 예외 지연 로딩 ( FetchType.LAZY ) 지연 로딩을 하는 이유는 JPA에서 발생하는 문제 중 가장 유명한 N + 1 문제를 해결하기 위함이다. 지연 로딩은 한번에 연관된 데이터까지 한번에 불러오는 것이 아닌 연관된 데이터를 필요한 시점에 그때 그때 불러오는 것이다. 그래서 왜 지연 로딩을 쓰는가? 예를 들어 Member과 Team테이블이 있고 Member와 Team는 N:1 관계가 있다. 이때 즉시 로딩(EAGER)을 하게 된다면 Team을 조회 시 해당 Team을 가진 모든 Member를 하나씩 조회하게 된다. 분명 Team 1개를 조회했는데 Team에 속한 Member N개의 조회 쿼..
CICD란 지속적인 통합과 지속적인 배포를 말한다. Jenkins는 이런 기능을 보다 편리하게 할 수 있는 Tool이다. 이번 연습에서는 Docker를 사용하지 않고 Jenkins만 사용했다. EC2 프리티어 사용할 경우 필수 EC2 프리티어에서 Jenkins를 바로 사용하는 경우 메모리 부족으로 서버가 멈추는 현상이 발생한다. 이때는 스왑 메모리를 사용하여 메모리를 늘려서 이러한 현상을 막을 수 있다. 이건 유료 서비스가 아니기 때문에 마음 편히 사용하셔도 좋습니다. Step1-2. EC2 프리티어 Jenkins 서버 터지는 현상 해결 CI / CD를 연습하기 위해 Jenkins에 대해 공부를 시작했는데 빌드시 서버가 터지는 일이 너무 많아서 매번 EC2 인스턴스를 중지하고 다시 실해을 매번 반복하다 ..
Nginx의 장점 중 하나인 로드 밸런싱이 생각나서 어떻게 하는건지 찾아보다 까먹지 않도록 작성 http { upstream backend_servers { server backend1.example.com; server backend2.example.com; } server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } location /api { proxy_pass http://backend_servers; proxy_redirect off; proxy_set_header Host $hos..
지금 문제점은 빌드 후 포그라운드에서는 정상 실행이 되지만 백그라운드 실행 시 연결이 되지 않는것이다. 이를 위해 Ubuntu에서 포트번호와 pid값을 자주 찾게 되어 외우게 되었다. Execute Shell #!/bin/bash jar_file="demo/target/demo-0.0.1-SNAPSHOT.jar" pid=$(pgrep -f "demo-0.0.1-SNAPSHOT.jar") if [ -n "$pid" ]; then kill -9 $pid echo "실행 중인 프로세스를 종료했습니다." else echo "실행 중인 프로세스가 없습니다." fi if [ -f "$jar_file" ]; then nohup java -jar $jar_file & echo "새로운 JAR 파일을 실행했습니다." e..
CI / CD를 연습하기 위해 Jenkins에 대해 공부를 시작했는데 빌드시 서버가 터지는 일이 너무 많아서 매번 EC2 인스턴스를 중지하고 다시 실해을 매번 반복하다 Swap이라는것을 알게되었다. 이를 적용해보니 실제로 서버가 터지는 현상이 없어졌다. 스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 스왑 파일로 사용할 메모리를 할당하려고 합니다. 어떻게 해야 하나요? repost.aws 1. Create Swap File dd 명령을 통해 Root 파일 시스템에 Swap File을 생성한다. bs 명령어 : 블록의 크기 count 명령어 : 블록의 수 아래의 Swap File은 약 4GB..