0621 - 0627
# 0621 - 0627
# 0621 - @DynamicUpdate
- JPA Entity에 사용하는 어노테이션으로, 실제 값이 변경된 컬럼으로만 update 쿼리를 만드는 기능.
- 기본적으로 @DynamicUpdate는 Spring JPA에서 제공하는 기능.
- JPA는 서버가 실행될 때 CURD에 관한 SQL문을 캐싱해놓음, UPDATE 대상이 모든 열로선언.
- 특정 값만 업데이트 되는 빈도가 많은 경우 효율성에 대한 문제가 생김.
- JPA는 캐시메모리를 이용하고 있기 때문에 업데이트를 하는 컬럼이 많아질 경우 SQL문을 생성하고 실행하는 것보다 캐시메모리에 존재하는 데이터를 이용하는 것이 더 효율적.
# 결론
특정값만 자주 변경되는 상황같은 필요한 경우에만 @DynamicUpdate를 사용하자!
# 0622 - systemctl과 service 명령어 차이점
service iptables start
systemctl start iptables
CentOS 5이전 버전은 service 구문으로,
CentOS 6이후 버전은 systemctl 구문으로 제어
7버전 이후로 서비스 관리 스크립트들은 서비스 유닛(Unit)으로 변경.
# 0624 - hibernate.hbm2ddl.auto 설정
hibernate에는 hbm2ddl.auto
설정 프로퍼티가 있다. SessionFactory가 생성될 때 스키마 DDL을 db로 검증하고 내보내는 기능을 상황에 따라 다르게 설정할 수 있도록 하는 프로퍼티이다.
# Option
- create : SessionFactory 시작시 스키마를 삭제하고 다시 생성
- create-drop : SessionFactory 종료시 스키마를 삭제
- update : SessionFactory 시작시 객체 구성과 스키마를 비교하여 컬럼 추가/삭제 작업을 진행. 기존 스키마를 유지
- validate : SessionFactory 시작시 객체 구성과 스키마가 다르다면 예외를 발생시킴
# 0627 - nginx를 통한 로드밸런싱 구성
# nginx 설치 및 실행
- 설치
$ sudo yum install nginx
- 실헹
$ sudo systemctl start nginx
- 확인 host 80 포트로 확인
# nginx.conf 설정
$ sudo vi /etc/nginx/nginx.conf
- 로드밸런싱 설정 추가
upstream cpu-bound-app {
server {instance_1번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
server {instance_2번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
server {instance_3번의_ip}:8080 weight=100 max_fails=3 fail_timeout=3s;
}
location / {
proxy_pass http://cpu-bound-app;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/
- reload
$ sudo systemctl reload nginx
- httpd connect 설정 변경
$ sudo setsebool -P httpd_can_network_connect on
# nginx 로그 확인
- 에러로그
$ sudo tail -f /var/log/nginx/error.log