목록전체 글 (153)
Dazzling 개발 노트
HTTP 상태 코드는 웹 서버가 클라이언트의 요청에 대해 반환하는 3자리 숫자로, 요청의 성공 여부 및 그 이유를 나타낸다. 이 코드들은 크게 5가지 범주로 나뉘며, 각 범주는 특정한 유형의 응답 상태를 대표한다. 1xx: 정보 응답 100 Continue: 클라이언트는 요청을 계속 진행할 수 있다. 서버는 요청의 초기 부분을 받았으며, 나머지를 계속 기다리고 있다. 2xx: 성공 200 OK: 요청이 성공적으로 처리되었다. 이는 가장 흔히 받게 되는 응답으로, 요청한 작업이 예상대로 이루어졌음을 나타낸다. 201 Created: 요청이 성공적으로 이루어져 새로운 리소스가 생성되었다. 이 응답은 주로 POST나 PUT 요청에 대해 반환된다. 204 No Content: 요청이 성공적으로 이루어졌으나, 클..
쇼핑몰에서 상품 검색이 중요하다는 생각이 들었다. LG TV를 검색했을 때 보통의 쇼핑몰은 LG ~~~ TV와 더불어 LG가 아니더라도 유사 TV 제품까지 검색된다. 그렇지만 일반 쿼리로 검색하면 LG TV 라고 검색했을 때 LG와 TV가 붙어있지 않은 검색어는 결과가 나오지 않는다. 이 부분을 해결하기 위해 Elasticsearch 검색을 도입시키고자 했다. 이미 프로젝트가 JPA로 세팅이 다 되어있고, 데이터도 MySql에 들어있는 상황, 프로젝트 마감 기간이 일주일도 남지 않은 점을 고려해 최소한의 노력으로 결과를 도출하고자 했다. 개발 환경 Spring Boot 2.6.5 Gradle Java 11 Elastic Cloud 8.12 Build.gradle 의존성 추가 ElasticsearchCon..
Code Coverage Code Coverage란 소프트웨어에서 test code가 본 코드를 얼마나 커버하고 있냐를 측정해주는 지표입니다. 테스트를 진행하였을 때 코드 자체가 몇% 나 실행되었느냐로 생각하실 수 있을 것입니다. 원래 원칙적으로 test code는 모든 시나리오에 대해서 설계되어야 합니다. 실제로 배포하는 서비스라면 더욱더 모든 시나리오를 커버하려 합니다. 하지만 현실적으로 내가 지금 작성한 테스트 케이스가 모든 케이스를 커버하는지를 객관적인 지표로 확인할 수 있는 방법 중에 하나가 Code Coverage입니다. JaCoCo JaCoCo란 Java Code의 coverage를 측정하는 라이브러리입니다. 테스트를 실행하고, 그 결과를 html 파일이나 csv, xml 파일을 통해서 시각..
시험안내 AWS 자격증이란? 아마존 웹 서비스(AWS) 클라우드 컴퓨팅 플랫폼 사용에 대한 지식과 전문성을 입증할 수 있는 프로그램. 클라우드 아키텍처, 개발, 운영 등 다양한 영역에 초점을 맞추고 있으며, 다양한 레벨로 구성되어 있다. 자격 시험은 전 세계의 테스트 센터에서 다양한 언어로 진행된다. 다양한 역할과 기술 수준에 따라 세분화된 인증을 제공한다. 인증은 네 가지 티어로 구분되며, 기초 > 어소시에이트 > 프로페셔널 > 전문 분야로 구성된다. Solutions Architect – Associate (SAA) 응시대상 AWS 서비스를 사용하는 클라우드 솔루션 설계 및 배포 경험자 (1년 이상 실무 경험) AWS Well-Architected Framework 기반 솔루션 설계 가능 유효기간 자..
Dispatcher-Servlet의 개념 Dispatcher-Servlet이란? HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러 (Front Controller) Front Controller 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리하는 컨트롤러 MVC 구조에서 함께 사용되는 디자인 패턴 Dispatcher-Servlet의 장점 어플리케이션으로 들어오는 모든 요청을 핸들링 공통 작업 처리 컨트롤러만 구현해도 Dispatcher-Servlet이 적합한 컨트롤러로 위임 가능 Dispatcher-Servlet의 동작과정 클라이언트의 요청을 Dispatcher-Servlet이 받음 요청 정보를 통해 위임할 컨트롤러를..
프로젝트를 진행하다가 데이터베이스의 다른 테이블에 접근하는 일이 필요할 때, 관련 서비스를 통해서 레포지토리를 통해 접근, 혹은 사용중인 서비스에서 레포지토리를 바로 호출해서 접근. 이 두 가지 접근에 대해 의견이 나눠졌다. 그래서 각각의 방법이 가진 특성과 그로 인한 장단점을 조사해봤다. A 서비스가 B 서비스를 거쳐 B 레포지토리에 접근하는 방식 이 방법은 서비스 계층의 캡슐화와 추상화를 잘 유지하면서 다른 도메인의 로직에 손쉽게 접근할 수 있도록 해준다. B 서비스는 B 테이블의 비즈니스 로직을 담당하며, A 서비스는 B 서비스가 제공하는 인터페이스를 통해 필요한 로직을 재사용할 수 있다. 장점: 1) 코드 재사용성의 증가 B 테이블과 관련된 비즈니스 로직이 B 서비스에 집중되어 있어, 다른 서비스..
스프링 프레임워크에서 제공하는 @Transactional 어노테이션은 데이터의 일관성과 무결성을 유지하기 위해 트랜잭션을 선언적으로 관리하는 강력한 메커니즘을 제공한다. 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 작업 단위로, 여러 작업들이 모두 성공적으로 완료되거나, 하나라도 실패할 경우 전체 작업이 취소(롤백)되는 것을 보장한다. 트랜잭션은 일반적으로 ACID(Atomicity, Consistency, Isolation, Durability) 속성을 만족해야 한다. @Transactional 어노테이션의 역할 @Transactional 어노테이션은 메소드나 클래스 레벨에 적용되어, 해당 범위의 실행을 하나의 트랜잭션으로 묶는다. 이 어노테이션을 사용함으로써..
스프링 프레임워크에서 @ResponseStatus 어노테이션은 컨트롤러 메서드나 예외 클래스에 적용되어 HTTP 응답의 상태 코드를 명시적으로 지정한다. 이 어노테이션을 사용함으로써 개발자는 특정 조건에서 원하는 HTTP 상태 코드를 클라이언트에게 반환할 수 있다. 다음은 @ResponseStatus와 함께 자주 사용되는 몇 가지 HTTP 상태 코드와 그 특징들이다. 200 OK 성공적인 요청과 응답을 나타낸다. @ResponseStatus(HttpStatus.OK)로 명시할 수 있으며, 일반적으로 조회 작업(GET 요청)이 성공적으로 완료되었을 때 사용된다. 201 Created 새로운 리소스가 성공적으로 생성되었음을 나타낸다. @ResponseStatus(HttpStatus.CREATED)를 사용하여..