본문 바로가기

[ BE ] 기술

(11)
[BE-기술] 채식 유형 계층형 검색 쿼리 만들기 안녕하세요 NOT-ERROR-064팀의 백엔드 개발자 황윤준입니다. 이번 프로젝트의 핵심 기능 중 하나인 '선택한 채식 유형에 맞춘 상품 조회'를 구현하기 위한 쿼리를 구현한 방법에 대해 블로깅하겠습니다. 해당 쿼리를 구현하기 위한 요구사항을 알아보겠습니다. 저희는 채식주의자의 스펙트럼을 고려하여 자신의 스펙트럼에 맞는 상품만 노출되는 형태로 쇼핑몰을 제작하기로 하였습니다. 저희는 제품 등록 시 제품의 채식유형을 한가지만 가질 수 있도록 했습니다. 또한 회원도 하나의 유형만 가질 수 있습니다. 그런데 문제는.... 바로 채식 유형 스펙트럼에 있었습니다. 위 표에서 볼 수 있듯이 채식 유형별로 먹을 수 있는 식재료(제품)이 계층형으로 포함되는 경우가 있습니다. 예를 들어, 락토를 선택한 회원이 상품을 조회..
[BE-기술] 자기참조를 활용한 계층형 카테고리 구현 안녕하세요 Not-Error 064 백엔드팀의 황윤준입니다. 이번 채식이들 쇼핑몰 프로젝트에서 카테고리 자기 자신이 parent이자 child인 방식을 활용하여 하위 카테고리 조회 시 상위 카테고리가 노출되며, 상위 카테고리에서도 하위 카테고리 조회가 가능한 방식을 구현하였습니다. ✅ 무한뎁스 카테고리 구현 방법을 활용하면 하나의 테이블로 전체 카테고리 관리가 가능합니다. 카테고리를 자유롭게 만들고 삭제할 수 있습니다. 카테고리 계층구조를 표현해 자기 자신이 포함된 상하위 카테고리를 조회하기 편합니다. 하나의 테이블에서 제작할 수 있기에 admin 페이지에서 운영자가 직접 카테고리를 추가 수정하는 api를 만들기에 적합합니다. 이번 카테고리 구현을 통해, 현시점에서 요구되는 개발요구사항을 넘어 카테고리의..
[BE-기술] Spring Data JPA와 QueryDSL 안녕하세요 NOT-ERROR팀의 백엔드 개발자 홍민정입니다. 🫧 ☑️ Spring Data JPA ▪️ Spring Data JPA 지루하게 반복되는 CRUD문제를 세련된 방법으로 해결하여 개발자는 인터페이스만 작성하면 됨 Spring data JPA가 구현 객체를 동적으로 생성해서 주입함 JpaReapository 인터페이스를 제공하여 이를 상속받아 우리가 상상할 수 있는 모든 API를 처리할 수 있음 public interface CartDetailRepository extends JpaRepository { } ▪️ Spring Data JPA의 쿼리 메서드 기능 기본적으로 CRUD 메서드 및 메서드 이름으로 쿼리를 생성함 @Query 애너테이션으로 쿼리를 직접 정의할 수 있음 메서드 이름만으로 J..
[BE-기술] AWS EC2서버 개설과 RDS 연동 안녕하세요 팀056 이현석입니다! 저번 시간에 시도했던 AWS 자동배포!! 이전에 준비해야할 여러가지 중 오늘은 EC2와 RDS에 대해 집중적으로 알아 보겠습니다~~ EC2 란? Amazon Elastic Compute Cloud을 줄여 EC2 라고하는 클라우드 컴퓨팅 서비스 입니다. 사용자가 가상의 컴퓨터를 임대받아 애플리케이션을 배포할 수 있고 이는 하드웨어에 대한 투자 없이 신속하게 개발하고 배포 할 수 있는 환경을 만들어 주었습니다. 주요한 특징을 보고 바로 사용방법에 대해 알아 보겠습니다. - Auto Scailing을 통한 자동 확장 및 축소 - 사용자가 인스턴스를 완전히 제어 가능 - 리소스 보안과 네트워킹 기능을 지원 - 사용한 만큼 페이 지불 EC2 시작하기 아래 더보기를 클릭해 과정에 ..
[BE-기술] 401(Unauthorized)과 403(Forbidden) 안녕하세요 NOT-ERROR팀 백엔드 개발자이자 PM 강시혁(제임스)입니다.😎 서론 최근 프로젝트를 진행하면서 Security 기술을 다루게 되었습니다. 그러다 보니 상태 코드 401 에러와 403 에러를 자주 접하게 되었습니다. 둘 다 인증/인가와 관련된 상태 코드입니다. 하지만 이 두 상태 코드의 차이를 명확하게 모른 상태입니다. 따라서 자주 혼동하게 되는데요. 그래서 오늘 이 둘의 차이를 정리하려고 합니다. 401과 403의 의미 1) HTTP 상태코드 401이란? 401 상태코드의 메시지는 Unauthorized입니다. 우리는 Authorized라 하면은 인가/권한이라고 알고 있습니다. 하지만 401에서는 의미상 '비인증'을 의미한다고 할 수 있습니다. 즉, mdn web docs 문서에 따르면 ..
[BE-기술] 채식쇼핑몰 '채식이들' 프로젝트 백엔드 개발 설계 후기 안녕하세요 NOT-ERROR-064팀의 백엔드 개발자 황윤준입니다. 코드스테이츠 개발 프로젝트도 어느덧 3주차.... 막바지로 달려가고 있습니다. 이전에 IT서비스를 기획하는 과정을 포스팅한 바가 있습니다. 2022.09.27 - [[ Team ] 기획] - [기획] 맞춤형 채식 쇼핑몰 프로젝트 IT서비스 기획 과정 정리 [기획] 맞춤형 채식 쇼핑몰 프로젝트 IT서비스 기획 과정 정리 안녕하세요 NOT-ERROR-064팀의 백엔드 개발자이자 前서비스기획자 황윤준입니다. 저희는 코드스테이츠 백엔드, 프론트엔드 수강생이 모여 현재 맞춤형 채식 쇼핑몰 프로젝트를 진행하고 있습니다. not-error-064.tistory.com 위 과정에서 우리에게 필요한 기능들이 대부분 도출되었습니다. 이제는 서비스를 실제로..
[BE-기술] Spring Data JPA의 DB 초기화 안녕하세요 NOT-ERROR팀 백엔드 개발자이자 PM 강시혁(제임스)입니다.😎 서론 최근 우리 팀은 구현 단계에 돌입했습니다. 이에 따라 백엔드 팀도 도메인 별로 역할을 나누어 기능을 구현하고 있죠. 하지만 점점 도메인 수가 증가하면서 테스트에 어려움을 겪고 있습니다. 가령 포스트맨으로 직접 데이터를 넣으며 테스트를 하려고 해 해도 시간이 오래 걸리죠. 물론 가장 좋은 방법은 테스트 코드를 작성하는 것입니다. 하지만 우리 팀은 아직 테스트 코드를 작성하는 것이 미숙합니다. 그래서 오늘 해결책이 될 수 있는 방법을 소개하려고 합니다. 제시하는 방법은 프로그램을 시작할 때 DB에 초기 데이터를 자동으로 저장시키는 방법입니다. 이제 자세하게 알아보도록 하겠습니다. 초기 데이터 저장 목표 : 프로그램 실행 시 ..
[BE-기술] RestController와 Controller 안녕하세요 NOT-ERROR팀의 백엔드 개발자 홍민정입니다. 🫧 🙏🏻 @Controller와 @RestController의 차이점은 HTTP Response Body가 생성되는 방식 (1) @Controller는 View가 반환됨 (2) @RestController는 객체를 반환하고 객체 데이터는 JSON 또는 XML로 HTTP 응답에 작성됨 🔺 @Controller - Client 요청으로부터 View를 반환 - Controller는 ViewResolver 설정에 맞는 View를 반환 ① Controller로 View 반환하기 ② Controller로 Data 반환하기 - RESTful 웹 서비스를 구현하기 위하여 Spring MVC의 컨트롤러에서 데이터를 반환하기 위해 @ResponseBody 사용 ..
[BE-기술] 걱정말아요. <Spring REST Docs> 자동화 별거 아닙니다..😂 안녕하세요 NOT-ERROR-064팀 백엔드 개발자 강시혁(제임스)입니다.😎 서론 오늘부로 다들 슬슬 구현을 시작했을 것입니다. 저와 백엔드 팀도 마찬가지고요.ㅎㅎ 하지만 그렇게 기다리고 기다리던 코드 구현인데, 막상 시작하려 하니 막막하신 분들도 있을 것입니다. 아마 그 이유 중에는 Spring Rest Docs를 사용해서 API 문서를 만들어야 하기 때문도 있을 것입니다. 저 또한 Spring REST Docs 기술을 적용할 때 어려웠던 부분들이 있었습니다. 가령 Test 방식으로 API 문서를 자동화해야 하는데 어디서부터 어디까지 구현을 해야 할지 감이 잡히지 않았습니다. 또한 프런트엔드 팀에게 문서를 빠르게 전달해야 하는데 테스트 코드 작성이 어려웠을 것입니다. 그래서 오늘 제가 그 방법에 대해서..
[BE-기술] 백엔드 개발자의 필수 과제, '순환 참조(Circular Reference)' 문제 해결 안녕하세요 NOT-ERROR-064팀 백엔드 개발자 강시혁(제임스)입니다.😎 서론 어제 '백기선 개발자님'의 Youtube 라이브 방송을 보게 되었습니다. 방송은 신입 또는 취업을 준비하는 개발자들의 프로젝트를 '리팩토링' 하는 내용이었습니다. 많은 프로젝트들이 방송에 나왔는데요. 출연한 프로젝트들의 공통점은 대부분 클래스 순환 참조 문제에 대한 지적을 받은 것입니다. 초보 개발자들이 대부분 빈(Bean)들 간의 의존성을 무시해서 발생하게 된 문제였습니다. 만약 순환 참조를 고려하지 않는다면, 추후 서비스 런칭 후 문제가 발생할 수 있다고 합니다. 저 또한 순환 참조란 용어가 굉장히 생소했습니다. 최근에 백엔드 개발자들과 협업하며, 많은 도메인을 개발하고 있기 때문에, 순환참조 문제에 대해서 제대로 알아..