개발 일지 168

[Git] Git Commit Message Convention

지금까지 혼자 공부하면서 마음대로 커밋 메시지를 작성해 왔었다,, 하지만 이제 프론트엔드 분들과 협업을 진행하게 되면서 '깃 커밋 메시지 컨벤션'이라는 많은 개발자 분들이 따르는 관습을 공부하고 지켜보려고 한다. 이러한 과정이 후에 또 다른 분들과 협업을 진행함에 있어 큰 도움이 되기를 바란다. Git commit message convention이란, Git을 사용하여 프로젝트를 관리할 때 개발자 분들이 커밋 메시지를 일관된 형식으로 작성할 수 있도록 지침을 제공하는 것을 말한다. 이렇게 일관된 커멧 메시지 형식은 프로젝트의 유지보수성과 협업 효율성을 높이는 데 중요한 역할을 한다. 팀 회의를 통해 Udacity Git Commit Message Style Guide를 참고하여 사용하기로 했다. Uda..

개발 일지/Git 2023.04.13

[Spring Boot] web.xml

web.xml은 Java 웹 애플리케이션에서 사용하는 설정 파일 중 하나로, 웹 애플리케이션의 구성 요소와 동작 방식을 정의한다. 웹 애플리케이션이 배포되면 웹 애플리케이션 서버에서 web.xml 파일을 읽어서 애플리케이션을 구성하고 초기화한다. web.xml 파일은 다음과 같은 정보를 포함할 수 있다. Servlet 정의 : Servlet 이름, Servlet 클래스, Servlet 매핑 정보, 초기화 매개변수 등 Servlet과 관련된 설정 정보를 포함한다. filter 정의 : filter 이름, filter 클래스, URL 패턴, 초기화 매개변수 등 필터와 관련된 설정 정보를 포함한다. filter는 Servlet 요청과 응답을 중간에서 가로채서 처리할 수 있다. Listener 정의 : list..

[Git] 내가 보려고 만든 git 명령어 모음

git 저장소 생성 및 관리 git init : 새로운 git 저장소 생성 git status : 현재 git 저장소의 상태 확인 git clone [원격 저장소 주소] : 기존 git 저장소를 로컬 컴퓨터로 복제 git add [파일명.확장자명] : 파일의 변경사항을 스테이징 영역에 추가 git reset [파일이름] : 스테이징 되돌리기 git commit -m "메시지" : 스테이징 영역에 추가된 변경 사항을 커밋(스냅샷 생성) git commit --amend : 커밋 메시지 수정 git reset HEAD^ : 현재 HEAD의 이전 커밋으로 되돌리기 git reset HEAD~n : 현재로부터 n번째 이전 커밋으로 되돌리기 git diff : 스테이징 되지 않은 변경 사항 출력 git diff ..

개발 일지/Git 2023.04.11

[Sprgin JPA] FetchType

JPA에서는 연관된 엔티티를 조회할 때 어떤 방식으로 가져올지를 'FetchType' 옵션으로 지정할 수 있다. FetchType.EAGER : 해당 엔티티를 조회할 때 즉시 관련 엔티티도 함께 조회한다. 엔티티를 조회하는 쿼리를 실행할 때 연관된 엔티티도 함께 조회하기 때문에 성능 상 이점이 있다. 하지만 조회할 엔티티의 개수가 많아질 경우 부담을 줄 수 있으며, 엔티티 간의 연관 관계가 복잡해지면서 쿼리가 복잡해질 수 있다. 또한 원하지 않는 데이터를 로딩하는 경우가 발생할 수 있다. FetchType.LAZY : 연관된 엔티티를 실제로 사용할 때만 조회한다. 엔티티를 로딩하는 쿼리를 실행하지 않기 때문에 초기 로딩 시간을 단축할 수 있다. 하지만 엔티티를 사용할 때마다 연관된 엔티티를 조회해야 하므..

[Cloud] VPC

VPC(Virtual Private Cloud)는 클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 한다. VPC를 사용하면 클라우드에서 사용하는 가상 서버들이 하나의 네트워크 상에 위치하며, 이를 통해 보안, 연결성, 관리 등의 이점을 제공한다. VPC는 다양한 클라우드 제공업체에서 제공하는데, 대표적으로 AWS(Amazon Web Services), Microsoft Azure, Google Cloud Platform 등이 있다. 각 제공업체마다 조금씩 다른 구성과 기능을 가지고 있지만 전반적으로 비슷한 구성과 기능을 제공한다. VPC를 구성하기 위해서는 우선 VPC 내에 사용할 IP 대역을 정의해야 한다. 이 IP 대역은 VPC 내에서 사용되..

개발 일지/CS 2023.04.08

[Cloud] Load Balancer

서비스에 너무 많은 사용자(클라이언트)가 접속하면 서버에는 과부하가 오게 된다. 이때, 과부하를 해결하기 위한 방법으로는 크게 서버의 하드웨어를 업그레이드하는 방법과 서버의 개수를 늘리는 방법이 있다. 물리적으로 서버의 사양을 높이는 방법인 Scale-Up은 서버의 수를 늘리지 않고 프로그램 구현에 있어 변화가 필요 없다는 장점이 있다. 하지만 높은 비용이 들고 업그레이드에는 한계가 있기 때문에, 클라이언트의 요청이 더욱 많아진다면 다시 부하는 발생하게 될 것이다. 두 번째로 서버의 갯수를 늘리는 Scale-Out은 여러 대의 서버가 나눠서 처리하기 때문에 사양을 높이지 않고도 비교적 저렴한 비용으로 부하를 처리할 수 있다. 이때, 클라이언트로부터 온 요청을 여러 서버에 나눠 처리할 수 있도록 교통정리를..

개발 일지/CS 2023.04.06

[Cloud] Proxy Server

프록시 서버(Proxy Server)는 클라이언트가 서버와 소통할 때, 네트워크 연결을 중개하는 서버이다. 즉, 서버에 바로 접근하지 않고 자신을 통해 서버에 접근할 수 있도록 해주는 일종의 대리 서버이다. 프록시 서버를 사용하는 이유는 여러 가지가 있다. 가장 일반적인 이유는 보안 문제 때문이다. 프록시 서버는 인터넷에서 데이터를 주고받을 때, 클라이언트와 서버 간의 연결을 암호화해서 보안을 강화할 수 있다. 프록시 서버를 통해 인터넷에 접속하면 클라이언트의 IP 주소가 노출되지 않기 때문에 개인 정보 보호에도 도움이 된다. 또한, 프록시 서버는 캐시를 사용하여 네트워크 속도를 향상할 수 있다. 프록시 서버는 이전에 요청한 데이터를 저장하고 있다가 동일한 요청이 들어오면 저장된 데이터를 반환하므로, 네..

개발 일지/CS 2023.04.05

[Cloud] Docker

Docker는 컨테이너화된 애플리케이션을 배포하고 실행하기 위한 오픈소스 플랫폼이다. 기존의 가상화 기술과는 달리, 호스트 운영체제와 컨테이너 운영체제 사이에 가벼운 추상화 계층을 제공한다. 이를 통해 동일한 운영체제에서 여러 개의 컨테이너가 실행되며, 매우 가볍고 빠르게 실행될 수 있다. 이러한 컨테이너 방식은 실행 환경에 구애받지 않고 애플리케이션을 실행할 수 있다는 장점이 있다. 컨테이너 기술은 애플리케이션을 컨테이너 내에 구성하기 때문에 의존성 충돌 문제를 해결해 준다. 또한 개발과 배포 환경을 일치시키고 수평 확장을 쉽게 할 수 있으며 각 서버에 새로운 내용을 배포하기 쉽게 만들어준다. Docker는 개발, 테스트, 배포 등 여러 단계에서 유용하게 사용될 수 있다. 애플리케이션 개발 과정에서는 ..

개발 일지/CS 2023.04.03

[Cloud] Cloud Storage(S3)

클라우드 스토리지(Cloud Storage)는 컴퓨팅 환경에서 데이터를 저장하고 관리하는 저장소이다. 컴퓨터 부품으로 비유하면 하드디스크의 역할을 하는 서비스이다. Google Drive, MYBOX, Onedrive 등이 이에 해당한다. 클라우드 스토리지는 데이터의 안정성, 가용성, 확장성 등을 제공하여 기업의 데이터 관리를 용이하게 한다. 예를 들어, 컴퓨터의 하드디스크에 저장된 파일에 접근하기 위해서는 해당 컴퓨터를 이용해야 되지만, 클라우드 스토리지를 이용하면 웹 환경에서 언제 어디서나 저장된 파일에 접근할 수 있다. S3 S3(Simple Storage Service)는 AWS에서 제공하는 객체 스토리지 서비스로, 데이터를 파일 형태로 저장하고 관리한다. 기존 클라우드 스토리지 서비스처럼 뛰어난..

개발 일지/CS 2023.04.02

[Cloud] RDS

RDS(Relational Database Service)는 AWS에서 제공하는 관계형 데이터베이스 서비스이다. RDS를 사용하면 데이터베이스 인프라를 쉽게 관리하고 확장할 수 있으며, 데이터베이스 관리에 대한 부담을 줄일 수 있다. RDS는 여러 가지 관계형 데이터베이스 엔진을 지원하고 대표적으로는 MySQL, PostgreSQL, Oracle Database, Microsoft SQL Server 등이 있다. 이러한 데이터베이스 엔진을 선택하고 RDS 인스턴스를 시작하면 AWS에서 자동으로 데이터베이스 서버를 프로비저닝하고 데이터베이스 엔진을 설치한다. 이후에는 데이터베이스 관리자가 데이터베이스 설정, 보안, 모니터링 등을 관리할 수 있다. 따라서 RDS를 통해 데이터베이스 관리자는 데이터베이스 인프..

개발 일지/CS 2023.04.01