Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

Kubernets를 이용하여 오토스케일링으로 구축하려고 하는데 파일 공유 문제가 골치에요

코어 파일들은 stateless하니 상관 없고 files 아래 디렉토리들은 다음과 같이 처리하긴 했는데 일부 디렉토리가 문제네요

 

해결된 것:

  • files/attach -> 실행될 때마다 읽히는 것이 아니니 NFS로 공유
  • files/config -> 컨테이너 실행 시 파일을 넣어주고 관리자 페이지에서 고급 설정 수정 못하도록 처리
  • files/member_extra_info -> 실행될 때마다 읽히는 것이 아니니 NFS로 공유

NFS로 공유하게 되면 속도 저하 문제가 있을 수 있거나 고정 값으로 지정할 수 없는 것들:

  • files/cache
  • files/env
  • files/ruleset
  • files/site_design

 

코어 수정을 하지 않는 좋은 해결 방법이 있을까요?

 

  • profile

    files/env는 무시해도 됩니다.

    files/ruleset은 머지않아 제거하거나 cache로 통합할 예정이며, 자금도 코어에 포함된 회원 모듈과 게시판 모듈 등 기본적인 기능만 사용하면 이 안에 아무 파일도 생성되지 않는 것이 정상입니다.

    files/site_design은 사이트 디자인 설정을 변경하지 않으면 변경되지 않습니다. 시스템 설정 변경을 막으셨다면 이것도 막을 수 있을 것 같습니다.

    즉, 말씀하신 4개 중에는 files/cache만 신경쓰시면 될 것 같습니다.

    물론 그 밖에도 다양한 자료들이 다양한 폴더를 만들어서 예상치 못한 용도로 사용하는 경우가 있고, 코어에서도 흔히 사용하지는 않지만 네트워크 공유시 오작동할 수 있는 files/locks 같은 것도 있으니, 어디까지 리스크를 짊어지고 갈 것인지는 님의 선택입니다.

    라이믹스 사용자의 99.99%는 horizontal scaling보다 vertical scaling의 덕을 더 많이 보고, 동접수가 수만 명에 달하는 대형 커뮤니티들도 예외가 아니기에, 하위호환성을 깨뜨려 가며 horizontal scaling을 적극 지원하는 것은 코어에서 우선순위가 아닙니다.

  • profile ?
    자세한 답변 감사드려요
    서드파티 자료는 코어가 아니니 수정하는데 제약이 없어서 상관 없을 것 같아요

    files/cache까지 NFS로 공유했을 때 속도 저하 및 안정성 문제가 있을 수 있다는 '느낌'을 가지고 있는데, 정말 실제 운영 환경에서 권장되지 않는 사항인지 궁금해요
  • profile
    라이믹스를 쿠버네티스로이용하다니 생소하네요ㅎㅎ
    수시로코드고치는저로썬 빌드가 귀찮을듯ㅜㅜ
  • profile ?

    development, test, staging, production 단계로 CI/CD 적용하여 서비스를 진행하려고 계획 중이라 k8s로 하는 편이 협업 시에도 좋을 것 같아서 선택했어요
    물론 development 단계에서는 k8s로 하기에는 너무 거창하다보니 docker로 개발자들간 환경을 일치시키고 build 없이 webroot를 volume으로 마운트 시켜서 개발 하고 있어요

  • ? profile

    여러 사람이 동시에 작업한다면 각자 다른 볼륨에서 개발하도록 하고, 필요할 때마다 git으로 서로 push, pull, merge, rebase 하도록 하는 편이 관리하기에 용이합니다. Production은 사실상 읽기 전용이니 상관없지만, 개발 환경에서 동일한 볼륨을 여기저기 마운트하여 사용하면 성능만 나빠질 뿐 누가 언제 무엇을 수정했는지 추적하기도 힘들고, 서로의 파일을 덮어쓸 위험도 있으니까요. CI/CD도 어차피 git으로 연동될 테니, 처음부터 끝까지 git 중심으로 플로우를 짜고 branch를 적극 활용하는 것을 추천드립니다.

  • profile ?
    네 맞아요 git으로 소스를 관리하며 협업하고 docker-compose와 docker을 통해 개발자들간의 로컬 개발 환경을 일치시키고 있어요

    말씀하신 것처럼 볼륨은 당연히 따로 사용해야 해요 걱정해 주셔서 고마워요
  • ? profile
    멋집니다. CI CD까지 활용한 k8s 환경구축
    먼훗날 수익구조가 발생하게되어서 클라우드 환경을 쓰게되면 언젠간 꼭해보고싶었던건데 ㅎㅎ