권한별 서버 & 리소스별 서버

한라산·2024년 11월 16일
0
post-thumbnail

서버를 권한별로 만드는 것과 리소스별로 만드는 것 어느 방법이 좋을까?
각자만의 장단점이 있고 상황에 따라 다르겠지만
개인적으로 보통의 경우 리소스별로 분리하는게 좋지 않을까 싶다.

그래서 장단점을 대략적으로나마 정리해 보았다.

권한별

권한별로 서버를 만든다.
[USER, ADMIN] 이 있다고하면 UserServer, AdminServer가 나올 것이다.(API 서버)

장점

  • 권한별로 행위가 확실하게 나뉜다.
  • 유저의 트래픽이 늘어나면 유저서버만 스케일아웃 방식으로 서버를 증설 가능하다.
  • 물리적인 격리로 보안에 용이하다.

단점

  • 의도치 않은 영향이 있다.
    각 서버에서 공유 클래스가 있는 경우 한 쪽에서만 수정될 경우 문제가 발생할 수 있다.
  • 지속적인 확인이 필요하다.
    비지니스가 독립적이지 못하기 때문에 항상 모든 권한의 서버를 함께 검증 해야한다.
  • 유저서버중 특정 비지니스만 트래픽이 폭발적으로 늘어난다해도 유저서버 자체를 늘려야한다.
  • 비지니스 로직이 서버별로 파편화 된다.

리소스별

리소스 즉 비지니스 별로 서버를 만든다.
한 개의 리소스만이 대상이 아닌 상황에 따라 리소스의 묶음이 하나에 서버가 될 수 있다.
[Account, Notice, Vote, Gallery] 가 있다고하면 각각의 리소스 서버가 될 수도 있고, Account Server, [Notice, Vote, Gallery] Server 가 될 수도 있다.

장점

  • 확장성이 좋다.
    특정 리소스에 대한 트래픽이 증가할 경우 해당 리소스 서버를 스케일아웃한다.
    (리소스 묶음의 경우 분리도 가능)
  • 비지니스 로직의 응집도가 높아진다.
    특정 리소스의 비지니스 로직이 해당 서버에만 존재할 것 이기에
  • 유지보수성이 높아진다.
    응집도가 높아지면 자연스럽게 유지보수성도 올라갈 것이다.
  • 민감한 리소스의 경우 보안이 강화된 서버에 격리하여 관리가 가능하다.

단점

  • 비용 증가
    구성하기에 따라서 권한별 서버보다 서버거 많아지기 때문에 비용이 증가한다.
  • 복잡성 증가
    서버간 통신이 많아질 수도 있기 때문에 그에 따른 관리가 필요

마치며

권한별 서버만의 장점은 아직 잘 모르겠다.
리소스별 서버로 구성한 다음 게이트웨이 서버를 구축해서 해당 게이트웨이를 권한별로 관리하는 것도 좋아보이는 방법이기 때문에
권한별로 각 리소스를 가진 서버를 만드는건 리스크가 많아 보인다.

물론 비지니스의 수정이 절대 없다고 한다면 권한별 서버가 나을거라 생각한다.

profile
산입니다.

0개의 댓글