dolph
34
2020-03-07 16:28:23 작성 2020-03-07 17:42:44 수정됨
4
461

비즈니스 로직은 스프링 서비스단에? 클라이언트 스크립트단에?


개인적으로 개발을 하다가 최근 회사에 들어와서 개발을 하다보니 제가 처리하는 방식과 좀 다른부분이 있어 궁금해졌는데요~! (회사에선 mybatis를 사용하고 있습니다.)

비즈니스 로직을 스프링 서비스단에서 처리하는게 맞는지, 클라이언트 스크립트단에서 처리하는게 맞는지 두개의 장단점이 어떤게 있나 의견 들어보고 싶습니다 ㅠㅠㅎ


예를 들어 DB에서 `A = 10`, `B = 20`이라는 값을 들고 온 후, `A`와 `B` 그리고 두 변수를 더한 `C = 30` 이라는 3개의 값을 클라이언트 화면에 표시하고 싶을경우입니다.

저 같은경우엔 스프링 서비스단에서 불러온 후, 서비스단에서 A와 B를 더해 C변수를 만들고, A,B,C 변수를 return 시켜 자바스크립트단에서는 해당 데이터를 받아오기만 해서 화면에 표시를 하는 방법을 선호했습니다.

근데 회사에서는 서비스 단에서 A와 B를 받아와 반환하고 스크립트 단에서 A와 B를 더해주는 작업을 하여 C값을 만들어 화면에 표시를 하는 방식을 사용하고 있습니다.


예시는 굉장히 간단하지만.. ㅠㅠ ERP시스템이다보니 데이터 양도 많고, 회계를 위한 계산식도 있습니다.

그리고 실제로 회사의 모든 소스 코드가 스프링 서비스단에서 단순히 마이바티스를 통해 DB 조회를 하고, 그 모델 리스트를 리턴해주는게 끝입니다. 스크립트 단에서 그걸 이래저래 요리하고 있었구요.


어느정도 서비스, 클라이언트 단에서 서로 필요한 부분을 나눠서 처리하는게 좋긴하지만, 회사 시스템은 아예 클라이언트단에서 모든걸 처리하고 있어서 좀 굉장히 놀랐습니다.

제가 알기론 클라이언트단에서 로직을 처리할 경우, 사용자의 컴퓨터에 영향을 많이 받아서 성능면에서나 처리면에서나 굉장히 안좋다고 알고 있는데..

저런경우 어떤 장단점이 있는지, 어떤식으로 분배를 해야할지 궁금합니다.

이부분에 대해 굉장히 궁금해 했는데 속시원하게 답변 받고싶습니다 ㅠㅠㅎㅎ


0
  • 답변 4

  • 코딩하는다현이
    49
    2020-03-07 16:45:20

    숫자연산은 큰 성능차이는 없지않을까요?

    현 시스템이 API호출하고 Frontend Framework 에서 처리하는 방법이면 기존방식을 따를수 밖에 없고

    Html 렌더링을 서버에서 하는거라면 두개 방식을 적용해놓고 속도비교를 하는게 좋을것 같네요 

  • 프매씨
    229
    2020-03-07 16:57:53 작성 2020-03-07 16:58:48 수정됨

    이 경우에는 환경에 따라 달라질 것 같네요.

    만약, 클라이언트 업데이트 및 수정을 주기적으로 하기 힘든 경우에는 주 비지니스 로직을 서버 단에서 처리하여 결과를 리턴할 것 같습니다. 반대로, 서버가 힘들면 클라이언트 단에서 처리하구요.

    또다른 경우, 데이터 전송 량이 적어야 하거나 빨라야 하는 경우. 서버에서 모두 처리 한 후에 필요한 데이터만 전달하여 데이터 사용량을 줄인다거나... (네트워크 송수신량, 또는 고객의 셀룰러 데이터 사용 량 등..)

    사실 위 정보만으로는 어느게 맞다, 더 좋다 라고 하기에는 힘들 것 같습니다.

  • 더미
    14k
    2020-03-07 17:21:45

    사용자의 컴뷰터에 영향을 받는다

    -> 서버에 영향이 덜 간다. 

    머가 되든 장단점이 있는거죠.


  • 봄을찾아서
    270
    2020-03-07 18:28:36

    요즘은 현재 근무 중인 회사에서 하고 있는 방식이 주류입니다.

    서버에서는 필요한 자원들을 내려주고 클라이언트에서는 자원들을 활용해서 화면을 꾸미고 있죠.

    보여주는 화면에 변경이 필요할 경우 서버 로직을 변경하는 것보다 클라이언트 로직을 변경하는게 더 유연하죠. 

    또한 요즘 프론트엔드 개발 프렘워크들의 장점을 잘 살릴 수 있는 개발 방식이죠.

    특히 요즘 개인 컴퓨터들의 사양이 올라가서 그렇게까지 부담되지도 않습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.