2024년 8월 21일부터 세차새차에 백엔드 개발팀에 합류하였다! 이번 포스팅은 온보딩 이후 나의 첫 이슈 해결 일지이다. 이슈 자체는 간단했다. (나의 기능 개발이 간단하지 않아서 문제였지만 ㅎㅎ..) 회원 엔티티인 Member의 필드값 수정 API를 구현하는 것이었다. 추가적으로 세차장의 새로운 Owner에 대한 Owner 변경 API 또한 구현하였다. 1. 회원 정보 변경 API 구현🤔 유효성 검사는 어느 계층에서?! 변경될 내용이 담긴 DTO가 컨트롤러에 전달된다. 이때, validation은 어느 단에서 처리해주어야할지 고민이 되었는데 CTO님과 상의 후 DTO 단에서 처리하도록 결정하였다! 여름방학에 한상곤 교수님께서는 듣기론 controller, repository, service,..
Backend
1. 배포 쉘 스크립트 작성하기 CI/CD가 구축되지 않은 상황에서 변경사항을일일이 갱신해주고 재배포해주는 과정은 매우 번거롭다. CI/CD를 구축하는 것이 가장 현명한 방법이겠지만 '쉘 스크립트'를 사용하여 생산성을 높여보자!! (1) 실행중인 애플리케이션 종료 현재 배포된 애플리케이션이 있다면 종료시키자! kill -15 명령어를 통해 서버를 중단시키는 것이 안정적이지만 시간이 너무 오래 소요된다면 kill -9를 통해 강제종료시키기로 하자! kill - 9 (SIGKILL) SIGKILL (Signal Kill) : 강제 종료 시그널로, 즉시 프로세스를 종료시킨다. 프로세스는 이 시그널을 무시하거나 이를 처리할 기회를 가지지 않는다.강제종료 방법은 프로세스가 정상적으로 종료되지 않거나 응답하..
1. EC2 배포(1) 배포(Deployment)란? "기능 구현이 끝났으니 배포를 해보자!" 이때, 배포란 무엇일까? 배포(Deployment)란 쉽게 말해 다른 사용자들이 인터넷을 통해 서비스를 이용할 수 있게 하는 것을 의미한다. 프로젝트의 기능 구현과 테스트는 주로 localhost라는 주소를 통해 이루어진다. 하지만 이 localhost는 다른 컴퓨터에서는 접근이 불가능한 로컬 주소이다. 따라서 배포를 통해 도메인(ex. https://www.naver.com/)나 IP(ex. 124.16.2.1)와 같이 고유의 주소를 부여받아 다른 컴퓨터의 접근을 가능하게 한다. (2) EC2(Elastic Compute Cloud)란? EC2란 쉽게 말해 다른 컴퓨터를 빌려 원격으로 접속해 서비스를 ..
1. 새롭게 배운 내용들(1) ⭐️⭐️ 외부 API 사용할 때는? Rest Client!스프링 공식 사이트 및 카테캠 nextstep 자료 참고⭐️ 스프링 프레임워크를 사용한 애플리케이션에서 외부 API와 통신할 수 있는 방법은 무엇이 있을까?통신할 수 있는 방법인 HTTP 클라이언트는 RestClient, WebClient, RestTemplate이 있다.RestClient란?스프링 6.1에 도입된 동기식 HTTP 클라이언트 애플리케이션. 템플릿 메서드 API를 제공하는 RestTemplate과는 달리 보다 유연한 API를 제공한다. ⭐️ Java 객체를 편리하게 HTTP 요청에 매핑하고, HTTP 응답을 Java 객체로 변환하여 처리할 수 있다. ⭐️ ⭐️ 따라서 핵심은 외부 API 명세서를 잘 읽..
1. 이번주 궁금증들(1) 기능 구현 후 테스트 코드를 작성하는 것까지는 알겠어. 그런데 내 테스트 코드가 정말 좋은 테스트 코드일까?양재현 멘토님 : 현업에서는 코드 커버리지 검사 결과가 최소 80% 이상이 나오게 테스트 코드를 작성하는 것을 목표로 합니다. 코드 커버리지란 : 소프트웨어의 테스트 케이스가 실제 코드를 얼마나 반영하는지 나타내는 지표 중 하나 라인 커버리지 : 코드 한 줄이 한 번 이상 실행된다면 충족결정 커버리지(브랜치 커버리지) : 모든 조건식의 내부 조건이 true/false를 가진다면 충족조건 커버리지 : if 조건문 안의 개별 조건식이 true/false인 경우 모두 실행되었을 때 충족. 사실상 결정 커버리지보다 더 detail한 커버리지인 것 스프링에서 Jacoco 라이브러리..
1. 이번주 궁금증들(1) Spring 환경에서 HTTP 요청과 응답을 JSON 형식으로 주고받는 방법은 무엇인가?일단, JSON(Javascript Object Notation)이란 무엇일까? 어떤 언어에서든 해석 가능한 데이터 교환 형식. 그렇기에 대부분의 프로그래밍 언어에서 쉽게 생성하고 파싱할 수 있는 형식이다.간단하고 가벼운 데이터 형식으로 텍스트 기반의 직관적인 데이터 표현 방식요청(Request) : 클라이언트에서 서버로 JSON 형식의 요청을 보내는 경우, 이를 객체로 변환하기 위해 @RequestBody 사용응답(Response) : @RestController를 사용한다면 controller 내 모든 메서드가 응답을 JSON 형식으로 자동 변환@RestControllerpublic cl..
1. pipenv란? pip와 기존의 가상환경 모듈의 문제점들을 보완하여 등장한 가상 환경 모듈이다. 쉽게 말하면 파이썬 개발자들끼리 서로 같은 개발 환경을 공유하며 작업할 수 있도록 도와주는 도구이다.pip : 파이썬 패키지 설치를 위해 사용되는 툴가상환경 모듈 : python 개발 환경에서 특정 프로젝트나 작업에 필요한 패키지와 라이브러리를 독립된 공간에서 관리할 수 있도록 하는 도구 2. 팀 프로젝트 시 pipenv 설정 방법 ex) 경단 프로젝트, pycharm ide (1) gyeongdan-server-fastapi git clone 경단 프로젝트의 경우 origin repo들로 이루어져 있기에 바로 git clon해주기(2) pipenv install (3) pipenv shell(4) i..
1. 데이터베이스 다루기 테이블이란? DB에서 데이터 형태를 정해 모은 저장 공간행과 열로 이루어진 데이터 표USE [database 이름] 를 통해 사용할 database를 지정해주면 query문을 작성할 때 [database 이름].name이 아닌 name과 같이 간략화할 수 있다.⭐️ DROP과 TRUNCATE의 차이점DROP : 테이블 자체를 삭제TRUNCATE : 테이블 구조는 냅두고 값만 삭제. 즉, 초기화시킴 실습 예제'pokemon' DB 만들기 'mypokemon' 테이블 만들기칼럼 이름 및 데이터 타입 : (1) number : INT (2) name : VARCHAR(20) (3) type : VARCHAR(10)포켓 데이터 집어넣기/// MISSION (1) pokemon DB 만들..