[인프런 워밍업 스터디 클럽 1기 BE] 세 번째 발자국
3주차 5/13 - 5/17
출처 : 자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Section 5 책 요구사항 구현하기
목표
책 생성, 대출, 반납 API를 온전히 개발하며 지금까지 다루었던 모든 개념을 실습해본다.
객체지향적으로 설계하기 위한 연관관계를 이해하고, 연관관계의 다양한 옵션에 대해 이해한다.
JPA에서 연관관계를 매핑하는 방법을 이해하고, 연관관계를 사용해 개발할 때와 사용하지 않고 개발할 때의 차이점을 이해한다.
객체지향과 JPA 연관관계
연관관계의 주인 : Table을 바라봤을 때 누가 관계의 주도권을 가지고 있는지를 의미
JPA 연관관계
1:1 관계 → 테이블에서 둘의 관계를 표현하기 위해 한 테이블이 다른 테이블의 id를 가지고 있어야 한다.
@OneToOne
어노테이션연관관계의 주인이 아닌 쪽에
mappedBy
옵션 (주인에게 매여있다)
1:N 관계
@OneToMany
+@ManyToOne
어노테이션@JoinColumn
어노테이션 : 연관관계의 주인에게 활용
N:M 관계
@ManyToMany
어노테이션구조가 복잡하고, 테이블이 직관적으로 매핑되지 않기 때문에 사용하지 않는 것이 좋다.
cascade
옵션 : 한 객체가 저장되거나 삭제될 때, 그 변경이 폭포처럼 흘러 연결되어 있는 객체도 함께 저장되거나 삭제되는 기능orphanRemoval
옵션 : 연관관계가 끊어진 데이터를 자동으로 제거해주는 기능
Section 6 생애 최초 배포 준비하기
목표
배포가 무엇인지 이해하고, 배포를 하기 위해 어떤 준비를 해야 하는지 알아본다.
스프링 서버를 실행할 때 DB와 같은 설정들을 코드 변경 없이 제어할 수 있는 방법을 알아본다.
git과 github의 차이를 이해하고 git에 대한 기초적인 사용법을 알아본다.
AWS의 EC2가 무엇인지 이해하고, AWS를 통해 클라우드 컴퓨터를 빌려본다.
기본적인 배포를 위한 준비
배포란?
우리 컴퓨터에 있는 코드를 전용 컴퓨터로 옮기고 java나 MySQL 등을 설치하고 실행하는 것을 의미
똑같은 서버 코드를 실행시키지만, 실행될 때의 설정을 다르게 하고 싶을 때, profile 사용
git과 github
git : 코드를 쉽게 관리할 수 있도록 해주는 버전 관리 프로그램
github : git으로 관리되는 프로젝트의 코드가 저장되는 저장소
Section 7 생애 최초 배포하기
목표
EC2에 접속하는 방법을 알아보고, EC2에 접속해 리눅스 명령어를 다뤄본다.
개발한 서버의 배포를 위해 환경 세팅을 리눅스에서 진행하고, 실제 배포를 진행한다.
foreground와 background의 차이를 이해하고 background 서버를 제어한다.
도메인 이름을 사용해 사용자가 IP 대신 이름으로 접속할 수 있도록 한다.
AWS와 EC2 배포
EC2에 접속하기 위한 준비
우리가 접속하려 하는 EC2의 IP 주소
이전 시간에 다운로드 받았던 키 페어 (pem 키)
접속하기 위한 프로그램 (Mac - terminal)
리눅스 및 Gradle 명령어
mkdir : 폴더 생성
ls : 현재 위치에서 폴더나 파일 확인
ls -l : 조금 더 자세한 정보 확인
cd : 폴더 안으로 이동
cd .. : 상위 폴더로 이동
pwd : 현재 위치 확인
rmdir : 비어 있는 폴더(디렉토리) 제거
sudo yum update : 관리자의 권한으로 설치되어 있는 여러 프로그램 최신화
sudo yum install 프로그램 이름 : 관리자의 권한으로 프로그램 설치
sudo systemctl status 프로그램 : 프로그램의 상태 확인
sudo systemctl restart 프로그램 : 프로그램 재시작
chmod : 파일이나 폴더의 권한 변경
ctrl + c : foreground로 실행 중인 프로그램을 중단하는 신호
nohup [명령어]& : 명령어를 background로 실행
rm : 파일 제거
vi : 리눅스 편집기인 vim을 이용해 파일을 염
cat : 파일에 있는 내용물을 모두 출력
tail : 현재 파일의 끝부분 출력
tail -f : 현재 파일의 끝부분을 실시간으로 출력
ps aux : 현재 실행 중인 프로그램 목록 확인
ps aux | grep java : java가 들어가는 프로그램 목록 확인
kill -9 프로그램 번호 : 해당 프로그램 종료
./gradlew build : 프로젝트 빌드
./gradlew build -x test : 프로젝트를 빌드하는데, 테스트 생략
./gradlew clean : 현재 빌드된 결과물 제거
과제
3주차 회고
벌써 3주차..! 인프런 워밍업 클럽을 알게 되자마자 백엔드 공부에 대한 욕심에 신청해버렸기 때문에 인턴, 자격증 등등 생각보다 많은 걸 같이 병행하게 되어버렸다.. 충분한 시간 투자를 못 했던 것 같아 아쉬운 마음이 든다. 하지만 백엔드 전반에 대해 어렴풋이 감이 잡히는 것 같다는 자신감과 함께 더 딥한 공부를 하기 위한 밑바탕을 마련한 것 같다! 그리고 사실 이 강의 이전에 독학으로 팀플에서 백엔드로 참여했을 때 배포가 진짜 너무너무 어렵고 멀게 느껴졌는데, 강의를 통해 실습해보면서 그때 그렇게 겁먹을 필요가 없었는데 라는 생각이 들었다. 그땐 강의를 듣기 전이었으니깐 🤓
미니 프로젝트까지 잘 마무리하자!
댓글을 작성해보세요.