주요 개념 분산 버전 관리 시스템 git은 중앙 저장소에 접근해야 작업을 할 수 있는 중앙 집중식 버전 관리와 다르게 개별적인 저장소에 복제되어 저장되고 개발자는 분산된 저장소에서 개별적인 작업을 할 수 있는 것이 특징이다. 로컬 저장소 원격 저장소에 저장된 작업물
static은 자바의 경우 JVM이 프로그램을 실행할 때 static영역의 메모리에 클래스의 정보가 로딩될 때 할당되고 프로그램이 종료할 때 할당 해제된다. heap 메모리 영역에 할당되는 instance와 다르게 GC에 의해 관리되지 않기 때문에(GC는 생명주기에 의
프로젝트를 만들 때 반복적으로 일어나는 문제들의 구조를 어떻게 풀어나갈 것인지에 대한 방법을 패턴화 한 것으로 설계자들이 올바른 설계를 빨리 만들 수 있도록 도와준다. 디자인 패턴의 카테고리는 그 안에서 또 생성, 구조, 행동 3가지로 구분하고 있다.생성 패턴에 해당하
특정한 패턴을 가진 문자들에 대한 검색이 가능한 검색키워드\[] : 안에 적힌 문자들 중 하나가 포함된 패턴\[bh]ook : cook X book,hook O\[a-z] : A X a,v,z 0^ : 다음으로 적힌 문자는 제외한 나머지가 포함된 패턴\[^B]ook :
Tomcat 8 버전을 설치한다.Run Debug Configuration에서 Tomcat local 서버를 생성하고 설치한 톰캣 파일의 위치를 지정해서 Tomcat과 연결시켜준다.(home과 base directory를 톰캣 폴더 위치로 지정)Run Debug Con
HTTP Request 서버와 클라이언트 간의 데이터 교환 프로토콜인 HTTP에서 서버가 특정 동작을 하도록 클라이어트에 전송하는 메세지 포맷은 다음으로 구성되어 있다. Method 서버가 수행해야 되는 동작(GET, POST, PUT, DELETE, PATCH, OPTION) URL 요청 타겟에 대한 정보 Version Header 인증, 캐싱, 쿠...
Data Transfer Object라는 의미를 가지고 계층 간의 데이터 교환을 위해서만 사용하는 객체를 의미한다. MVC 패턴의 경우 Controller가 Model을 통해 수행한 비즈니스 로직에 대한 결과를 도메인에 담아서 View에 전달하는 것이 아닌 각 view
CORS란? Cross-Origin Resource Sharing Policy의 약어로 다른 출처에 대한 요청 처리에 대한 정책과 관련된 개념이다. 일반적으로 다른 출처에 대한 요청을 금지하고 있고 여기서 말하는 동일한 출처란 도메인과 포트번호가 똑같은 경우일 때를 의
스프링에서 클라이언트의 요청을 서버가 처리할 때 발생하는 예외 처리의 방법은 크게 3가지가 있다. 이 방법들의 공통점은 스프링의 핵심 기술인 aop를 사용해 스프링이 로직을 수행할 때 발생하는 error를 대신 catch하고 개발자가 의도한 에러 메세지나 error s
도메인이나 Dto를 구성하는 필드의 유효성 검사를 해주는 데이터 유효성 검사 표준 기술인 Bean Validation은 반복되는 유효성 검사를 간단하게 할 수 있게 하는 기능이다. 제약 설정 @NotNull 값이 비어있지 않는 제약 @Positive 값이 양수인 제약 @PositiveOrZero 값이 양수이거나 0인 제약 @Min(value=최소값) 값의...
웹서비스의 배포 과정은 코드를 수정하고 빌드와 테스트를 한 후 클라우드 서버에 올리는 과정의 반복이다. 이러한 반복적인 빌드, 테스트, 배포 과정을 대신 수행해 개발에 대해 더 집중할 수 있는 장점을 제공하는 자동화 과정을 CI/CD(Continuous Integrat
Security Group aws 인스턴스 그룹에 대한 외부 네트워크와의 접속 허용 규칙과 관련된 설정을 지칭하는 것으로 외부에서 서버로의 규칙과 관련된 인바운드 규칙과 서버에서 외부로의 규칙과 관련된 아웃바운드 규칙 두 가지가 있다. 아래 사진처럼 접속을 허용하는
로컬 환경이 아닌 별도의 가상환경을 구성하는 방법이었던 하이퍼바이저를 사용하여 그 위에 게스트 OS를 올리는 방식의 단점을 개선하면서 등장하게된 프로세스 가상화 방식으로 docker는 별도의 게스트 OS 없이 docker 엔진 위에 가상환경 구동에 필요한 라이브러리와
컴퓨터 구조에서 볼 수 있는 메모리 계층 구조는 프로세스 처리를 담당하는 cpu에 전달해야 하는 메모리를 빠르게 전달할 수 있는 목적을 두고 있어 빠른 메모리는 cpu에서 가깝게 위치하고 느린 메모리는 멀리 위치한 형태를 띄고 있다. 빠를 수록 비싸기 때문에 상위 계층
메세지큐 메세지 큐는 응용 소프트웨어 간의 비동기 통신을 위한 메시지 지향 미들웨어를 구현한 시스템으로 producer로부터 들어오는 메세지(요청)를 큐에 담고 consumer는 큐에 담긴 메세지를 꺼내 처리하는 방식의 구조로 구현되어 있다. 기존 동기적인 방식의 메세지 교환을 미들웨어의 비용을 추가하여 비동기식으로 처리하게 될 때 얻게 되는 장점은 다...
Sharding 서비스가 성장하게 되면 자연스럽게 많은 트래픽이 데이터베이스에 몰리면서 부하가 커지고 데이터베이스에 저장하는 양이 늘어나게 되면서 데이터베이스의 성능 향상을 위해 데이터를 분산저장할 수 있는 데이터베이스 샤딩을 하게 된다. 샤딩은 관리 측면에서 복잡하고
데이터베이스에서의 병행제어 및 회복작업의 논리적인 단위로 하나의 트랜잭션은 하나 이상의 DML들로 구성되어 있다. 애플리케이션이 작업하는 논리적인 하나의 작업은 여러 DML로 이뤄져 있는 경우가 많고 이 작업 단위를 기준으로 회복작업과 병행제어를 해야 되기 때문에 이를
MockMvc는 Spring MVC의 컨트롤러에 대한 통합 테스트를 지원하는 테스트 프레임워크이다. MockMvcBuilder MockMvc 객체를 생성할 때 MockMvcBulider의 standaloneSetup를 사용하게 되면 개별 컨트롤러에 대한 단위 테스트가
PathResourceResolver를 통해 외부에서 들어오는 URL 요청이 들어올 때 서버가 어떤 경로의 정적 파일을 반환할지를 지정해준다. addResourceHandler를 통해 모든 URL 목록을 처리할 수 있도록 등록하고 addResourceLocations을
프론트엔드의 반응형 프로그래밍 끊임없이 변화하는 데이터 스트림을 다루는 비동기적 프로그래밍으로 이벤트를 발견하는 관찰자와 발생한 이벤트에 반응하는 핸들러의 구성을 다룬다. 실시간으로 사용자가 발생한 이벤트로 생긴 데이터의 변화를 새롭게 DOM으로 렌더링해야 되는 프론
WebSocket STOMP Spring STOMP
실무에서 Spring JPA를 사용하며 배운 Spring JPA 관련 개념들을 정리했습니다. Entite 속성 @JoinColumn name: 매핑할 외래키 명 referencedColumnName: 외래키가 참조하는 대상 테이블의 기본키 컬럼명 @Enumerat
토비의 스프링 부트 - 이해와 원리 강의를 공부하며 정리한 자료입니다. 스프링 부트 구조 컨테이너리스 개발 컨테이너리스 웹애플리케이션 아키텍처는 웹클라이언트와 통신을 처리하는 웹컴포넌트와 웹컴포넌트를 관리하는 웹컨테이너, 요청을 처리하는 비즈니스 로직을 담당하는 스프
Spring Batch > 『스프링 배치 완벽 가이드』를 바탕으로 공부한 내용을 정리한 글입니다. Job JobInstance, JobParameter @JopScope, @StepScope JobExecution JobRepository Step StepExec