본문 바로가기

전체 글

(77)
부하 테스트 프로세스(High-level overview of the load testing process) 부하테스트는 크게 아래 네가지의 프로세스 흐름을 가집니다. 부하 테스트 계획 부하 테스트 스크립트 작성 부하 테스트 실행 부하 테스트 결과 분석 명확성을 위해 이렇게 단계적으로 표시되어 있지만 실제로는 종종 겹치는 경우도 많습니다. 애플리케이션 릴리즈 프로세스에서 처럼, 테스팅 프로세스도 지속적이고 민첩하게(Agile) 진행되어야 하며, 이전 작업을 기반드로 작은 단계가 추가될 때마다 시간이 지남에 따라 전점 더 견고해져야 합니다. 애플리케이션 코드처럼 테스트는 느리게 시작합니다. 산의 꼭대기에서, 가장 간단한 형태로 테스트가 진행됩니다. 초기 단계 테스트는 주로 위험에 기반한 것으로 생각할 수 있습니다. 이 수준의 테스트는 실패 가능성에 대한 실패 가능성에 대한 반응입니다. 이러한 테스트는 애플리케이션..
부하 테스트란, 부하 테스트의 종류 Load Test By k6 1. Load Testing Performance testing != Load testing Performance testing는 확장성, 탄력성, 가용성, 안정성, 복원력, 지연 시간 등 시스템이 전반적으로 얼마나 잘 작동하는지를 검증합니다. 부하 테스트는 성능 테스트의 한 유형일 뿐이며 애플리케이션 성능의 여러 측면을 테스트하는 데 사용할 수 있는 접근방식 중 하나입니다. 모든 성능 테스트에 부하 테스트가 포함되는 것은 아닙니다. 부하 테스트는 특히 처리해야할 작업의 볼륨이 많은 어플리케이션에 대한 성능을 확인하고 검증하는데 중점을 둡니다. 수동으로 수행할 수도 있지만 대부분의 팀은 자동화된 부하 테스트 스크립트를 작성하여 애플리케이션에 액세스하는 실제 사용자를 프로그래밍 방식으로 시뮬레이션 합니다...
[Inside] failed to lazily initialize a collection of role 해결 개발 도중 로그인 후에 아래와 같은 오류가 발생했다. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: unannn.inside.domain.user.User.applications, could not initialize proxy - no Session 원인을 찾아보니, 한 트랜잭션에서 생성된 엔티티 객체에서 트랜잭션이 종료된 후 지연로딩을 통해 연관 데이터에 접근하려고 했기 때문이라고 한다. 그리고 대부분의 글에서 연관관계에 있는 엔티티의 fetch = FetchType.LAZY 설정을 FetchType.EAGER 로 변경, 즉 지연로딩을 즉시 로딩으로 바꿔서 문제를 해결하라고 말했다...
[Inside] Spring Security formLogin 사용 시 입력값 검증 프로젝트의 로그인 방식은 두가지로 이루어진다. 아이디와 패스워드를 입력하는 Form 로그인 방식 Google, 네이버를 활용한 소셜 로그인 방식 Form 로그인 방식에서는 아래와 같이 Spring Security 에서 formLogin 을 사용해 인증을 수행하고 있다. 인증을 통해 권한을 얻지 못한 상태에서 권한이 필요한 URL로 접근하면 loginPage()에서 매개변수로 지정한 URL로 리다이렉트 시키고 로그인 페이지를 출력한다. 로그인 페이지의 구성은 아래와 같다. 여기서 회원가입한 아이디와 비밀번호를입력하고 로그인 버튼을 누르면, SecurityConfig에서 loginProcessingUrl("/login")으로 등록한 Url로 Post요청이 이루어진다. 여기서, Spring Security의 ..
[프로젝트 'Inside'] 기본 도메인 설계와 개발 과정, 느낀 점 프로젝트 기획 배경 올해 초 몇 개의 동아리에 지원하면서 지원서를 작성할 일이 몇 번 있었다. 보통 구글 폼을 통해 많이 모집했고, 자체적인 동아리 홈페이지 내에서 지원서를 직접 받는 경우도 있었다. 구글 폼의 경우 손쉽게 지원서 양식을 만들고 누구나 쉽게 사용할 수 있다는 장점이 있지만, 결국 설문조사를 목적으로 만들어진 서비스이기 때문에 지원서 기능에 특화시킬 수 있는 부분들이 몇가지 있어보였다. 그래서 처음에는 아래를 목표로 프로젝트를 기획하게 되었다. 내가 쓴 글과 모집자가 확인 하는 글의 시각적인 불일치를 해결해보자 모집자가 더 편하게 지원서 확인할 수 있도록 만들기 먼저 시각적 불일치는 내가 입력한 글이 시각적인 부분에서 그대로 모집자에게 전달될 것이라고 보장하지 않는 문제를 말한다. 예를 들..
[TIL] @Secured, @PreAuthorize 비교 Spring Security WebSecurityConfigurerAdapter을 상속받는 클래스를 통해 다양한 설정이 이루어진다. 그 중 하나로 User의 권한에 따라 접근 URI를 제한해 줄 수 있다. 이때 클래스에 @EnableGlobalMethodSecurity 어노테이션을 통해 컨트롤러의 메소드 레벨에서 접근 권한 제한을 설정해 줄 수 있다. 이와 같이 적용하면 어노테이션의 옵션에 따라 여러 방법 중 선택하여 손쉽게 접근 권한을 설정해 줄 수 있다. @Secured 가장 간단한 방법으로 @EnableGlobalMethodSecurity(securedEnabled = true) 와 같이 securedEnabled 속성을 true로 해주면 사용할 수 있다. 사용하고자 컨트롤러 메소드에 아래와 같이 ..
[TIL] 영속성 전이 CASCADE 인프런 JPA 강의를 들은지 오래된 상태에서 개인 플젝에서 활용하려고 하다보니 까먹어서 해매는 상황이 많이 생겼다. 그렇게 해맸던 부분들이 나올 때마다 다시 공부하고 정리해보려고 한다. CASECADE 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티 또한 영속상태로 만들고 싶다면 영속성 전이를 사용하면 된다. 쉽게 말해 부모 엔티티를 저장, 삭제할 때 자식 엔티티 또한 함께 적용시킬 수 있다. CASCADE 옵션이 없으면 연관관계를 맺고 있는 모든 Entity를 하나씩 영속화하거나 제거해야 할 것이다. 아래는 Recruitment 엔티티는 Question의 자식 엔티티이다. 두 엔티티는 1:N 의 양방향 연관관계를 맺고있다. 이와 같은 상태에서 Recruitment에 Questioin 객체를 추가하고 ..
[TIL] @DataJpaTest @DataJpaTest 오직 JPA 컴포넌트들에 초점을 맞춘 JPA 테스트를 위한 어노테이션이다. @DataJpaTest를 사용하는 것은 full auto-configuration을 비활성화하고 대신 JPA 테스트와 관련된 configuration만 적용한다. 기본적으로 @DataJpaTest가 지정된 테스트들은 트랜잭션이고 각 테스트 마지막에 롤백된다. 또한 내장된 메모리 내 데이터베이스를 사용한다.(명시적이거나 보통 auto-configured DataSource를 대체하여) @AutoConfigureTestDatabase 어노테이션은 이 세팅을 오버라이드 하는데 사용될 수 있다.(내장 메모리 데이터베이스말고 다른 DB를 선택할 수 있다는 뜻인듯) SQL 쿼리들은 기본적으로 spring.jpa.sho..