본문 바로가기

Spring34

[스프링 부트 핵심 가이드] Chapter 11장. 액추에이터 활용하기 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 11장. 액추에이터 활용하기 스프링 부트 액추에이터는 HTTP 엔드포인트나 JMX를 활용하여 어플리케이션을 모니터링하고 관리할 수 있는 기능을 제공한다 JMX (Java Management Extensions)는 자바에서 어플리케이션의 상태를 모니터링하고 설정을 변경할 수 있게 해주는 API다 MBeans (Managed Beans)를 생성해야 한다 아래와 같이 spring-boot-starter-actuator 모듈의 종속성을 추가한다 SwaggerConfiguration 클래스를 가져오고 그에 따른 의존성을 추가해야 한다 org.springframework.boot spring-boot-starter-actuator 엔드포인트 Act.. 2023. 10. 8.
[스프링 부트 핵심 가이드] Chapter 10장. 유효성 검사와 예외 처리 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 10장. 유효성 검사와 예외 처리 어플리케이션의 비즈니스 로직이 올바르게 동작하기 위해서 데이터를 사전 검증하는 작업이 필요하고, 이것을 유효성 검사 또는 데이터 검증이라고 한다 유효성 검사는 Validation으로 프로그래밍에서 매주 중요한 부분이고, 자바에서 가장 신경 써야 하는 것 중 하나가 NullPointException 예외이다 일반적인 어플리케이션 유효성 검사의 문제점 일반적으로 사용되는 데이터 검증 로직에서, 계층별로 진행하게 되면 각 클래스별로 분산되어 있어 관리하기 어렵고, 검증 로직에 중복이 많아 유사한 기능의 코드가 존재할 수 있으며, 검증해야 할 값이 많으면, 코드가 길어진다는 문제점이 있다 이를 해결하기 위해 자.. 2023. 10. 1.
[스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 9장. 연관 관계 매핑 RDBMS를 사용할 때에 한 테이블을 가지고 모든 기능을 구현하기 불가능 하다 즉 여러 테이블을 이용하고, 연결하여 기능을 구현한다 One To One : 일대일 (1:1) One To Many : 일대다 (1:N) Many To One : 다대일 (N:1) Many To Many : 다대다 (N:M) 일대일 매핑 일대일 단방향 매핑 @Entity @Table(name="MEMBER") @Getter @Setter @NoArgsConstructor public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long mem.. 2023. 9. 24.
[스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 8장. Spring Data JPA 활용 JPQL JPA Query Language의 줄임말로 JPA에서 사용할 수 있는 쿼리를 의미한다 JPQL은 엔티티 객체를 대상으로 수행하는 쿼리다 쿼리 메서드 주로 Repository라는 패키지를 만들어서, 그 안에 Repository 인터페이스를 만든다 그리고 인터페이스는 JpaRepository 클래스를 상속 받아서 다양한 CRUD 메서드를 사용할 수 있다 쿼리 메서드는 크게 동작을 결정하는 주제 (Subject)와 서술어 (Predicate)로 구분한다 'find.... By', 'exists... By'와 같은 키워드로 쿼리 주제를 정하며 'By'는 서술어의 시작을 나타내는 구분자 역할을 .. 2023. 9. 16.
[Java] Nginx [Java] Nginx NginX 굉장히 가벼운 웹 서버고, 많은 요청이 들어와도 좋은 성능을 보이고 있다 Apache vs NginX Apache 요청이 아파치 웹서버로 들어올 때마다, 프로세스를 생성을 하여, 프로세스가 하나의 요청을 처리한다 요청이 들어올 때마다 프로세스를 생성하여 오버해드가 발생할 수 있다 비교적 무겁고, 성능이 NginX에 비해 떨어진다 NginX master 또는 worker 프로세스를 configuration에 따라서 미리 생성해 놓는다 Task Queue에다가 요청을 쌓아두고, 한 개의 프로세스가 여러 개의 요청을 처리한다 Task Queue에다가 요청을 쌓아두면서, 비동기 처리도 가능해진다 미리 프로세스를 적게 두면 Task Queue 쌓이는 요청이 많아 응답이 느려진다 .. 2023. 9. 14.
[스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 스프링 부트 핵심 가이드 [스프링 부트 핵심 가이드] Chapter 6. 데이터 베이스 연동 어플리케이션은 데이터를 주고 받는 것이 주 목적이다 특히 엔터프라이즈급 어플리케이션에서는 데이터베이스가 꼭 필요하다 Maria DB 설치 https://mariadb.org/download 에서 마리아DB를 설치할 수 있다 그 외에도 MySQL 같이 다양한 데이터 베이스가 있다 ORM Object Relational Mapping으로 자바와 같은 객체 지향 언어에서 의미하는 객체와 RDB (Relational Database)의 테이블을 자동을 매핑하는 방법이다 장점 ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다 쿼리문 전체를 작성하지 않아도 된다 (개발 비용이 줄어든다) 객체지향적으로 데.. 2023. 9. 8.
스프링 캐시 스프링 캐시 캐시 임시로 데이터를 저장하는 공간이다 인메모리가 될 수 있고, 서버에 캐시를 만들 수 있다 빠른 처리 속도로 성능을 향상할 수 있다 이미 조회한 데이터를 임시로 저장하고, 다음에 같은 데이터에 접근할 때, 더 빠르게 데이터를 조회할 수 있도록 한다 예) 어제 배웠던 내용을, 저번 주에 배웠던 내용보다 더 빠르게 기억할 수 있다 캐시를 정할 때, 얼마나 요청이 많이 들어오는지 확인해보는 방법도 있다 유저가 요청을 할 때마다, 데이터를 생성해야 하나? 미리 데이터를 생성해 놓고, 유저들이 그 데이터를 조회하는게 더 빠르다 캐시를 삭제해야 하는 이유 업데이트가 될 시에, 캐시의 데이터도 없어야 한다 캐시는 무한정 메모리가 아니다 (한번씩 비워줘야 한다) 캐시에는 TTL이 있다 Time To Li.. 2023. 9. 5.
스프링 스크래핑 스프링 스크래핑 스크래핑이란? 웹사이트 굉장히 많은 데이터를 가지고 있고, 사용자들이 보기 편하게 가공이 되어 있다 HTML 문서를 보기 편하게 만든 것이 웹사이트 웹사이트에 HTML을 통해 보여지는 정보들을 모으는 것이 웹 스크래핑이란 것이다 웹 스크래핑은 HTML 문서를 받고 문서를 파싱(Parsing, 구문 분석) 해서 필요한 데이터를 추출한다 (일반적으로 파이썬으로 많이 사용된다) Client 대신 스크래핑 서버가, 웹 서버에게 요청을 보내서 데이터를 받아오는 것이다 서버를 사용하는 유저들의 수가 많으면 서버 부하가 걸리듯이, 스크래핑 서버에서 너무 많은 요청을 보내면 서버 부하가 걸린다 즉 서버에 요청을 보낼 때에는, 웹 서버에서 부하가 걸리지 않을 정도의 요청을 보내야 한다 주의사항 사이트의 .. 2023. 9. 4.
스프링 API 문서 만들기 스프링 API 문서 만들기 작성 이유 백엔드 개발자 같은 경우 프론트 개발자에게 문서를 전달하여, 어떤 기능이 있는지 알려준다 백엔드 개발자끼리 정보를 공유할 수 있다 즉 개발자가 만든 기능을 사람들이 이해할 수 있도록 작성을 하는 것이다 .txt로 만들면, 업데이트, 수정 하는 것이 어렵다 (개발 할 때마다 수정을 해야 한다) 계속 수정을 못 하면 사용자들이 기능을 제대로 못 사용할 수도 있다 API 문서를 돕는 tool Swagger / ReDoc / GitBook 등이 있다 고르는 방식은 협업의 방식, 사람들의 취향 등 사용한 언어를 고려해서 사용할 수 있다 사용성 : 간단한가??? Swagger? HTML로 접근을 할 수 있다 API 문서를 만들면, 하나의 URL로 다른 사람에게 공유를 할 수 있.. 2023. 9. 3.