본문으로 바로가기

jpa app 운영 배포 전략

category Spring/Spring Data JPA 2019.03.13 16:27

jpa app 운영 배포 전략 


jpa로 앱을 만들고 백엔드 서버를 운영 할 때 db에 컬럼이 추가 되는 경우가 있습니다.


jpa같은 경우는 서버가 뜰 때 db하고 entity하고 매핑을 한 다음에 뜹니다.


예를들면 entity에 phone이라는 필드가 있지만 db에는 없는 경우는 매핑이 되지 않아서 서버가 뜨지 않습니다.



그래서 jpa에는 hibernate.ddl-auto에 update라는 옵션이 있는데 prod에는 보통 update는 해놓지 않고 validate로 해놓습니다.


이 옵션을 update로 해놓고 수정한 서버를 재부팅 하면 entity하고 db의 field와 비교를 해서 db의 field에 alter를 해서 컬럼을 추가합니다.


왠지 이야기만 들어도 문제가 생길 것 같지 않으신가요?


컬럼이 추가 되면 안쓰던 컬럼이라서 문제가 생길 여지가 비교적 작지만 만약 컬럼이 지워진 경우에 앱을 배포하면 jpa앱이 db의 컬럼을 지워버리겠죠? ㅋㅋ


서버를 띄운지 얼만 안되었으면 그나마 복구를 해볼만한 의지가 생기겠지만 서버를 띄운지 1년이 넘어서 row가 500만건 정도 되고 심지어 이 table이 돈을 다루는 테이블에 이런 일이 일어난다면 복구하기가 참 어려울 것입니다.


그래서 prod에 컬럼이 추가되거나 지워진 경우에는 가장 안정적으로 하고 싶다면 db에 io가 일어나지 않도록 점검을 걸어놓던지 하고 컬럼을 db에 직접 추가한 후 배포 하는게 가장 안정적이라고 할 수 있겠습니다.




end.




댓글을 달아 주세요