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
Last update: July 22, 2021 19:09
Contributors: jaesungahn91