[인프런 워밍업 클럽 0기 백엔드] 3주차(최종) 발자국 (내용 정리)

[인프런 워밍업 클럽 0기 백엔드] 3주차(최종) 발자국 (내용 정리)

인프런 워밍업 스터디의 마지막 주차가 마무리되어 가고 있습니다.

3주차에 학습했던 내용들을 전체적으로 정리해 보고자 합니다.

미니 프로젝트 수행은 하단의 깃허브 주소를 남겨두도록 하겠습니다.

이전과 동일하게 학습한 내용, 미니 프로젝트 관련 내용들을 개인 블로그, 깃허브에 모두 정리하고 있습니다.

하단은 학습 내용을 정리한 제 블로그 주소입니다.

https://twojun-space.tistory.com/category/%EA%B8%B0%EB%A1%9D%2C%20%ED%9A%8C%EA%B3%A0/InFlearn%20Warming-up%200%EA%B8%B0%20BE

 

(1) GitHub (Mini project)

https://github.com/twojun/inflearn_warmingup_be_project

 

 

 

1. [11일 차] - 배포(Deployment), H2 DB를 통한 Profile 적용, Git & GitHub, AWS EC2

(1) 11일 차 관련 학습 내용 개인 블로그 정리

 

1-1. 배포의 뜻, 스프링 Profile

(1) 애플리케이션에서의 배포의 뜻, 배포의 특징에 대해 알아보았다.

(2) 사용자가 최종적으로 서비스를 이용할 수 있게 진행하는 일련의 작업으로 보면 된다.

(3) 그리고 profile에 대해서도 알아보았는데 우리는 개발을 하면서 자연스럽게 profile 기능을 사용하고 있었다.

(4) 이처럼 profile의 경우 똑같은 서버 코드를 실행시키지만 실행환경과 장소에 따라 각 다른 프로그램과 자원을 사용할 수 있도록 하는 것을 의미하게 된다.

 

 

1-2. Profile 적용

(1) 간단하게 인메모리 DB인 H2 Database에 대해 알아보고, application.properties 또는 application.yml에서 DB profile을 설정하기 위한 옵션 적용이 가능함을 학습했다.

 

(2) Run/Debug Configurations 메뉴에서 Active profiles를 yml 또는 properties에서 설정한 값으로 채워두고 서버를 실행시킨다.

 

 

1-3. Git & GitHub

(1) Git, GitHub의 특징과 차이점을 알아보고 GitHub를 왜 많은 개발자들이 사용하고 있는지 그 장점과 특징에 대해 중점적으로 알아보았다.

 

(2) git init, git remote, git status 등 Git의 기본적인 명령어 학습

 

 

1-4. AWS EC2(Amazon Web Service Elastic Computer Cloud)

(1) 아마존에서 웹 서비스의 배포와 운영을 위해 제공하는 클라우드 서비스인 AWS EC2와 특징에 대해 학습했다.

(2) AWS EC2를 통해 개발한 서비스의 배포와 운영을 위해 가상 서버 인스턴스를 생성할 수 있으며 애플리케이션의 트래픽, 규모 등을 고려하여 생성한 서버 인스턴스의 리소스를 확장할 수도 있다.

 

 

1-5. 11일 차 학습 내용 개인 회고

(1) 개발만큼 배포와 운영 단계도 백엔드 개발에서 가장 중요한 부분이다. 이 부분에 대해 학습하고 실제 프로젝트에도 적용할 수 있는 능력을 기르고자 한다.

 

 

 



2. [12일 차] - AWS EC2 접속, 기본적인 Linux command, AWS Computing 환경에서 서버 배포를 위한 환경 구성, & 배포, 종료되지 않는 실행(foreground & background)

(1) 12일 차 관련 학습 내용 개인 블로그 정리

https://twojun-space.tistory.com/195

 

 

2-1. AWS EC2의 두 가지 접속 방법

(1) key pair를 통한 접속 (Mac os의 경우 Iterm을 통해 접속 가능)

(2) AWS Console을 통한 접속

 

 

2-2. 기본적인 리눅스 커맨드 학습

(1) 디렉토리 생성 및 삭제, 경로 이동 등 기초적인 리눅스 명령에 대해 학습

 

 

2-3. AWS Linux에서 서버 배포 준비

(1) 우선 Console에서 Git을 별도로 설치한다.

 

(2) 서버 코드의 실행을 위한 JDK를 설치한다.

 

(3) DBMS 설치(RDB : MySQL)

 

 

2-4. EC2 환경에서도 동일하게 데이터베이스 구성, 빌드와 배포

(1) EC2 환경에서도 동일한 테이블 구조를 세팅한다.

 

(2) Remote repository에서 Git Clone으로 기존 서버 코드를 모두 가져온다.

 

(3) AWS EC2 Free tier의 경우 성능이 좋지 않다. 요즘은 가벼운 애플리케이션이더라도 서버 리소스를 많이 잡아먹기 때문에 Swap Setting을 통해 저사양의 인스턴스를 대상으로 메모리와 함께 추가적으로 스토리지도 함께 사용할 수 있도록 설정한다.

 

(4) gradlew를 통해 빌드를 진행한다. 무료 서버를 사용하는만큼 테스트는 돌리지 않는 것이 성능상 유리하다.

 

(5) 빌드 성공 시 빌드 디렉토리가 생성되고 내부로 이동하면 .jar 파일이 생성되어 있다. 이제 빌드된 .jar 파일을 통해 서버 실행이 가능한 상태이다. java -jar 명령으로 서버를 실행한다.

 

 

2-5. 종료되지 않는 실행

(1) foreground & background의 차이에 대해 알아보았다.

 

(2) nohup 명령어를 알아보고, 파일 내부를 확인할 수 있는 cat, tail 등 명령어에 대해 추가 학습했다.

 

 

2-6. 12일 차 학습 내용 개인 회고

(1) 배포에 대한 전반적인 내용을 빠르게 학습해볼 수 있는 파트였던 것 같다. 서버 애플리케이션의 경우 대부분 리눅스 환경에서 다루어지기 때문에 리눅스에 대한 이해와 커맨드를 빠르게 체화시키는 부분이 중요할 것 같다.

 

 

 

 

 


 

3. [13일 차] - build.gradle, Spring & Spring Boot

(1) 13일 차 관련 학습 내용 개인 블로그 정리

https://twojun-space.tistory.com/196

 

 

3-1. build.gradle

(1) build.gradle이 무엇인지 빌드 도구인 gradle이 무엇인지 알아보고 프로젝트에 필요한 의존성을 관리할 수 있는 도구임을 학습했다.

 

(2) build.gradle을 이루는 plug-in, repositories, dependencies, dependencies에 대해 학습했다.

 

 

3-2. Spring & Spring Boot

(1) Spring, Spring Boot를 시기별로 출시된 버전, 버전이 갖는 의미에 대해 학습했다.

 

(2) 기존 스프링과 스프링 부트의 차이에 대해 학습했다.

  • 스프링, 스프링 부트와의 차이점 : (1) 간편한 설정 제공

  • 스프링, 스프링 부트와의 차이점 : (2) 간단한 의존성(라이브러리, 프레임워크) 설정 관리

  • 스프링, 스프링 부트와의 차이점 : (3) 강력한 확장성, MSA(Micro-Service Architecture)에 적합한 모니터링 기준 제공 등

 

 

3-3. application.yml(properties), Lombok library

(1) application.yml, application.properties 모두 스프링 프로젝트의 전반적인 설정 정보를 정의하기 위한 파일로 볼 수 있다.

 

(2) yml은 계층 구조를 갖고 properties는 동일한 key, value 타입이지만 계층 구조가 존재하지 않는다.

 

(3) Lombok 라이브러리는 개발자에게 많은 편리성을 제공해주는 라이브러리이다. Getter, Setter와 같이 반복되는 Boiler plate code를 제거할 수 있게 도와준다.

 

 

3-4. 13일 차 학습 내용 개인 회고

(1) 스프링으로 개발을 진행하며 의존성을 관리하는 도구인 build.gradle과 스프링, 스프링 부트의 차이점, 설정 정보를 관리하는 application.yml에 대해 학습할 수 있었다. 무심하게 사용해오던 도구들이지만 의미를 다시 한 번 더 정리하고 제대로 알고 사용할 수 있으면 좋겠다는 생각을 하게 되었다.

 

 

 



4. 14일 차 마지막 마무리 영상, 스터디 마지막 최종 회고

(1) 마무리 섹션에서는 코치님께서 백엔드 개발에 있어 전체적인 학습 방향성을 개인적으로 조언해 주시는 시간과, AWS 호스팅 서비스의 과금 계산, 강의에서 소개되지 않았던 SQLMapper인 MyBatis, ORM 기반 기술인 JPA의 비교, 클라이언트 사이드 렌더링, 서버 사이드 렌더링에 대해 간단하게 정리해 주셨다.

 

(2) 약 3주 간 온라인 강의와 세션 외에도 수강생들의 끊임없는 질문에 항상 웃으며 친절하게 대답해 주셨던 열정이 가득한 최태현 코치님, 열심히 배우고 성장하기 위해 끊임없이 달리는 러너분들이 있어서 스터디를 잘 마무리할 수 있었던 것 같습니다. 짧았다면 짧고, 길었다면 긴 시간이었지만 스터디를 완주할 수 있게 되어서 기쁘고 이번 스터디 수료를 통해 많은 성장은 아니지만 개인적으로 어느 정도 성장하는 데 도움이 되었다고 생각합니다. 스터디를 참여하면서 많은 분들을 만났고, 꾸준히 배움을 멈추지 않는 수강생분들을 보며 저 자신도 많이 반성하게 되었던 기간이었던 것 같습니다 다시 한 번 코치님, 러너분들, 이 스터디 기회를 만들어주신 인프런 관계자 여러분들께 감사하다는 말씀을 드리고 싶습니다.

 

코치님, 0기 백엔드 러너분들, 인프런 관계자분들을 항상 응원하겠습니다!

모두 화이팅입니다. 😁

 

 

댓글을 작성해보세요.