개요 비지니스로 돈을 버는 모든 회사에서 운영하는 애플리케이션들은 이 순간에도 끊임 없이 로그를 남기고 있다. 로그를 적재하는 가장 일반적인 형태는 운영 서버에 파일로 남기는 것이다. 이 경우, 상식적으로 시간이 지날수록 로그 파일의 크기가 커진다는 것은 누구나 예상할 수 있다. 따라서, 적재되고 있는 로그 파일을 적절하게 일단위 또는 용량 단위로 분리하고 오래된 로그는 삭제하는 조치가 필연적으로 요구된다. 이를 무시했다가 디스크 용량이 가득 차서 애플리케이션이 작동을 멈추는 장애가 일어나는 것을 간간히 목격해왔다. (이름만 대도 알만한 IT로 먹고 사는 대형 회사들이다.)대부분의 애플리케이션은 로그를 관리하는 정책을 자체적으로 해결하는 형태를 가진다. Apache, NGINX, 그리고 Java 진영의 ..
개요 Spring Boot 기반 프로젝트에서 요청 API에 대한 권한 검사를 수행하는 방법은 여러가지가 있을 수 있다. 서블릿 필터를 이용하는 방법, 스프링 인터셉터를 이용한 방법, 스프링 시큐리티를 이용한 방법 등이다. 마지막으로 Spring AOP을 이용한 방법이 있다. Spring AOP를 이용하면, 스프링 시큐리티 대비 비교적 간단하고 직관적인 방법으로 권한 검사가 가능한 장점이 있다. 이번 글에서는 이러한 Spring AOP를 이용한 권한 검사 방법을 설명하고자 한다. 라이브러리 종속성 추가 프로젝트 루트의 /build.gradle 파일에 아래 내용을 추가한다. dependencies { implementation 'org.springframework.boot:spring-boot-sta..
개요 물리적으로 서로 다른 데이터베이스인데, 테이블 스키마는 완전히 동일하게 적용하여 운영 중인 2개의 레거시 애플리케이션이 있다고 가정하자. 이러한 2개의 서로 다른 데이터베이스를 한 애플리케이션에서 JPA를 이용하여 동시에 접근해야할 경우, 코드 중복을 최소화하는 방법을 고민하고 정리하였다. 사전지식 Spring Boot 환경에서 JPA를 적용하는 방법은 본 블로그의 이 글을 참고한다. @MappedSuperClass 적용 @MappedSuperClass은 테이블 구조에 있어 많은 컬럼을 공통적으로 공유하면서 부분적으로 다른 컬럼이 존재하는 서로 다른 테이블을 엔티티로 구현하기 위해 고안된 JPA 어노테이션이다. 따라서 완전히 동일한 구조의 서로 다른 테이블에도 적용할 수 있다. 적용 예는 아래와 같..
개요 리눅스에서 cat, tail, find, grep와 같은 명령어의 사용법을 잘 숙지하고 있으면, 텍스트 파일(주로 로그 파일)에 대한 자유로운 검색 및 가공이 가능하다. 이번 글에서는 이 명령어들에 대한 사용법을 간단히 정리하고자 한다. tail 명령어 사용 예 tail 명령어의 사용 예는 아래와 같다. # foobar.log의 새로 추가되는 라인을 실시간으로 출력 $ tail -f foobar.log # foobar.log 파일의 1000번째 라인부터 끝까지 출력 $ tail --lines=+1000 foobar.log find 명령어 사용 예 find 명령어의 사용 예는 아래와 같다. # access.log 파일이 존재하는 모든 전체 경로를 출력 $ sudo find / -name "access..
- Total
- Today
- Yesterday
- 로드바이크
- node.js
- Kendo UI
- 구동계
- graylog
- 평속
- kotlin
- chrome
- Spring Boot
- bootstrap
- 알뜰폰
- Tomcat
- 로드 바이크
- java
- JHipster
- jpa
- MySQL
- Kendo UI Web Grid
- Docker
- DynamoDB
- CentOS
- jsp
- 자전거
- 태그를 입력해 주세요.
- jstl
- maven
- Spring MVC 3
- Eclipse
- JavaScript
- spring
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |