Kubernets를 이용하여 오토스케일링으로 구축하려고 하는데 파일 공유 문제가 골치에요
코어 파일들은 stateless하니 상관 없고 files 아래 디렉토리들은 다음과 같이 처리하긴 했는데 일부 디렉토리가 문제네요
해결된 것:
- files/attach -> 실행될 때마다 읽히는 것이 아니니 NFS로 공유
- files/config -> 컨테이너 실행 시 파일을 넣어주고 관리자 페이지에서 고급 설정 수정 못하도록 처리
- files/member_extra_info -> 실행될 때마다 읽히는 것이 아니니 NFS로 공유
NFS로 공유하게 되면 속도 저하 문제가 있을 수 있거나 고정 값으로 지정할 수 없는 것들:
- files/cache
- files/env
- files/ruleset
- files/site_design
코어 수정을 하지 않는 좋은 해결 방법이 있을까요?
files/env는 무시해도 됩니다.
files/ruleset은 머지않아 제거하거나 cache로 통합할 예정이며, 자금도 코어에 포함된 회원 모듈과 게시판 모듈 등 기본적인 기능만 사용하면 이 안에 아무 파일도 생성되지 않는 것이 정상입니다.
files/site_design은 사이트 디자인 설정을 변경하지 않으면 변경되지 않습니다. 시스템 설정 변경을 막으셨다면 이것도 막을 수 있을 것 같습니다.
즉, 말씀하신 4개 중에는 files/cache만 신경쓰시면 될 것 같습니다.
물론 그 밖에도 다양한 자료들이 다양한 폴더를 만들어서 예상치 못한 용도로 사용하는 경우가 있고, 코어에서도 흔히 사용하지는 않지만 네트워크 공유시 오작동할 수 있는 files/locks 같은 것도 있으니, 어디까지 리스크를 짊어지고 갈 것인지는 님의 선택입니다.
라이믹스 사용자의 99.99%는 horizontal scaling보다 vertical scaling의 덕을 더 많이 보고, 동접수가 수만 명에 달하는 대형 커뮤니티들도 예외가 아니기에, 하위호환성을 깨뜨려 가며 horizontal scaling을 적극 지원하는 것은 코어에서 우선순위가 아닙니다.