개발자
저는 주니어개발자입니다 제 방식은 백엔드는 로직처리나 쿼리결과를 프론트로 보내고 프론트에서 데이터를 화면에 보이기쉽게 가공해서 보이는방식으로 하는데 지금다니는회사 프로젝트에서 이중중첩반복문을 사용해서 json형태로 만들고 화면에선 그대로 보여주는 방식을 하라고합니다 이중중첩반복문 자체도 좋지않을뿐더러 데이터가공을 백엔드에서 할때 데이터가많으면 서버부하가 나지않나요? 그리고 프론트에서 객체리스트로 2차원배열형태를 사용하는걸 보통 개발자들은 좋아하지않나요? 특히 그래프나 통계를 낼때 데이터들을 분류해서 꺼내는작업을하다보면 객체리스트형태로 할수밖에없던데 이렇게하지말고 데이터를 동적(데이터값이 바뀌어도 수정할필요없이)이 아닌 정해진 변수로 값을 꺼내도록 하라는데 이게맞나요..?
답변 1
안녕하세요 답변 드립니다. 😏 예시가 없어서 말씀하시는게 어떤 경우인지 잘 와닫지 않지만 프론트에서 데이터는 되도록 가공을 지양하는 것이 좋습니다. 데이터를 처리하는 것이 있다면 백엔드의 서버가 클라이언트보다 빠르고 좋으며 캐싱이나 Redis등을 활용하여 적제적소에 적은 리소스로 뿌리는게 가능합니다. 대부분의 경우 클라이언트에서 여러번의 가공이 들어간다면 페이지의 로딩이나 첫 화면이 느려지거나 인터렉티브 동작까지의 시간이 오래 걸리게 되며 이러한 경우 유저 이탈이나 프로덕트의 문제가 될 수 있습니다. 특히 최근엔 모바일 웹으로도 접근하는 유저가 많아졌고 그 중 성능이 안좋은 기기들도 많은 만큼 이러한 처리는 서버에서 하는것이 맞으며 이러한 추세로 최근 SSR(서버사이드 렌더링)을 중심으로 한 Next나 React에서 데이터를 서버에서 처리하도록 지향하고 있습니다. 또한 데이터 가공을 프론트에서 한다면 필요한 정보를 여러 군대에서 가져와야 할 수 있으며 필요 없는 정보까지 불러오게 되 리소스와 통신시간이 더욱 증대될 수 있습니다. 가장 치명적인 경우는 예를 들어 사용자가 아이템 5번의 A B C를 보여줘야 하는데 서버에서 5번인지 알아야 A가 나오고 A정보가 있어야 B가 나오고 B정보를 통해 C를 조회한다면 매우 치명적입니다. 순차적으로 통신이 이뤄져야 되서 첫 화면 조회시 매우 많은 시간이 소요될 수 있으며 중간에 B 혹은 C에서 에러가 발생하면 다시 A를 요청할지? A가 틀렷는지? B가 에러인지 등 수많은 예외처리를 작업해야 합니다. "객체리스트로 2차원배열형태"가 어떤 것인지 모르겠지만 하나의 객체 (예를들어 리스트)라면 List : [a, b, c] 등은 종종 사용하지만 2중 배열은 거의 사용하지 않습니다. 2중 배열 데이터의 유무판단, b가 1중일지 2중일지, b의 안에 또 1~2중이 들어갈 수도 있다면 이후 예외처리나 데이터의 타당성을 파악하기 매우 힘들어집니다. 한 객체에는 하나의 1차 배열, 다중배열을 사용하게 된다면 그것은 상단에서 오브젝트로 분리해서 따로 전달하는게 더 적절합니다. 마지막의 동적 정적의 경우 일반적으로는 작성자님이 주신 동적으로 처리하는게 일반적입니다. 만약 정적 값을 사용해야 한다면 그 이유가 이미 그런식으로 처리하는 로직이나 코드가 반영되어 있어 큰 변경이나 테스트 없이 적용하고 싶거나 기존 프로덕트를 활용하기 위해서 그러한 설계를 했을 가능성이 있긴 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 05월 13일
백엔드에서 데이터 가공을 하는 것은 매우 흔한 일이며, 실제로 필요한 경우가 많습니다. 하지만, 이에 대한 결정은 여러 요소를 고려하여 내려져야 합니다. 적절한 데이터 가공의 수준과 위치는 프로젝트의 특성, 성능 요구사항, 개발팀의 스킬 등에 따라 달라집니다. 특히 데이터가 많을 경우 서버 부하를 생각해야 하는데, 이럴 때는 데이터베이스에서 직접 쿼리 결과를 가져오거나 캐싱 등 다른 기술을 사용하여 해결할 수 있습니다. 프론트엔드에서 객체 리스트나 2차원 배열 형태를 사용하는 것에 대해서도 개발자들 사이에서 견해 차이가 있을 수 있습니다. 이것은 코드의 가독성 및 유지 관리와 관련된 문제입니다. 어떤 경우에는 이런 구조가 유용할 수 있으나, 복잡성이 높아지면서 유지 관리 비용을 증가시킬 수 있습니다. 그래프나 통계 같은 경우에도 백엔드에서 처리를 할 수 있지만 프론트엔드에서 처리하게 되면 백엔드의 부하를 감소시키고, 사용자 경험을 개선하는 데 도움이 될 수 있습니다. 말씀하신 "정해진 변수로 값을 꺼내도록 하는" 방식은 코드의 유연성이 떨어질 수 있으므로, 이는 특정 비즈니스 로직이나 요구 사항에 따라 결정해야 할 문제입니다. 결론적으로, 최적의 해결책을 찾기 위해서는 팀 내부의 의사소통과 프로젝트의 요구사항을 고려하여 접근할 필요가 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!