-
(스프링 기본) Domain, Repository, Service, Controller
웹 애플리케이션 계층 구조 Domain 도메인 모델 도메인 모델이란 특정 문제와 관련된 모든 주제의 ‘개념’ 모델이다. (비즈니스 도메인 객체) 소프트웨어 개발에서 시스템의 비즈니스 로직과 규칙을 표현하는 핵심 요소이다. 구성요소 엔티티 (Entity) : 고유 식별... Read More
-
(자바) 람다식 (Lambda)
람다식이란? 익명함수 : 메서드의 이름과 반환값이 없이 간략하게 표현한 함 Java 8에서 도입된 기능으로, 익명함수를 간결하게 표현하는 방법이다. 람다식을 통해 코드를 더 간결하고 가독성 높게 작성할 수 있다. 기본 형태 (parameters) -> ex... Read More
-
(자바) 스트림 (Stream)
개념 Java 8부터 추가된 기능으로 컬렉션, 배열과 같은 다양한 데이터 소스를 추상화하여 일련의 계산을 표현한다. 스트림을 사용하여 데이터를 필터링, 매핑, 집계하는 등의 작업을 더 간결하고 선언적으로 표현할 수 있다. 특징 선언전 방식 : 처리하는 방식보다 처리할 데이터에 집중... Read More
-
(디자인 패턴) 정적 팩토리 메서드 패턴
팩토리 메서드 패턴 개념 객체 생성의 책임을 메서드에 위임하는 디자인 패턴 일반 생성자 대신 정적 메서드를 통해 객체를 생성하고, 객체 생성에 대한 더 많은 제어 및 로직과 유연성을 제공하여 다양한 형태로 객체 생성이 가능하다. 예시 코드 class Car { private String n... Read More
-
(OAuth2 Login) 구글 소셜 로그인 구현 (3) - JWT 인증
JWT JWT란? JSON Web Token의 약자로 인증에 필요한 정보들을 암호화한 JSON 토큰을 의미한다. 토큰에는 사용자 관련 여러 정보가 포함되어있다. JWT를 통해 Stateless 하게 설계가 가능하다. JWT 인증 순서 사용자가 로그인 정보를 가... Read More
-
(OAuth2 Login) 구글 소셜 로그인 구현 (2) - 도메인 생성
도메인 생성 BaseTime @Getter @Setter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTime { @CreatedDate private... Read More
-
(OAuth2 Login) 구글 소셜 로그인 구현 (1) - 동작원리
개요 OAuth2란? Google, Naver, Kakao와 같이 신뢰할 수 있는 어플리케이션의 Open API와 통신하여 해당 어플리케이션이 대신 사용자의 인증을 처리하여 로그인 서비스를 이용할 수 있도록 해주는 방식이다. 사전 준비 Google의 OAuth2를 이용할 것이기 때문에 Google... Read More
-
(도커) 도커와 DevOps
DevOps & Pipeline DevOps DevOps = Development(개발) + Operations(운영) 개발과 운영의 거리를 줄인다. 데브옵스는 애플리케이션과 서비스를 빠른 속도로 제공하기 위한 문화, 철학, 방식, 도구를 모두 포함한다. 데브옵스는 컨테이... Read More
-
(도커) 도커 컴포즈
도커 컴포즈 기본 도커 컴포즈는 여러 개의 Docker 컨테이너들을 관리하는 도구이다. 도커 컴포즈는 도커 데스크탑 설치 시 기본으로 설치된다. 한 번의 명령어로 여러 개의 컨테이너를 한번에 실행하거나 종료할 수 있다. 로컬 개발환경에서 활용하기 편리하다. 도커 컴포즈를 통해 관리할 컨테이너를 doc... Read More
-
(도커) 도커 실무
레이어 관리 Dockerfile에 작성된 지시어 1개당 레이어가 1개가 추가된다. 불필요한 레이어가 많아지면 이미지의 크기ㅣ가 늘어나 빌드 속도가 느려진다. 따라서, 명령어의 수를 줄여 레이어의 개수를 최소한으로 만들어야한다. 이와 같이 RUN 지시어는 &&... Read More
-
(도커) 도커 볼륨
` 컨테이너의 상태 Stateless 컨테이너는 상태가 없다는 것이 징이다. 하나의 이미지로 컨테이너가 2개 생성되고, 각 읽기/쓰기 레이어가 생성된다. 컨테이너2가 삭제되면 컨테이너2의 읽기/쓰기 레이어도 삭제된다. 컨테이너1을 업데이트하면 컨테이너1의 읽기/쓰기 레이어가 삭제된 후에 새로운 컨테이... Read More
-
(도커) 네트워크
네트워크 기본 IP & 포트 공인 IP : 전 세계에서 유일한 주소를 갖는 IP를 말한다. 사설 IP : 소속된 장비 내에서만 유일한 주소를 갖는 IP를 말한다. 하나의 장비 내에서 여러개의 사설 IP가 존재하고, 각 사설 IP는 대역을 갖는다. 네트워크 인터페이스 : 인터넷에 연결하기 위해서 ... Read More
-
(도커) 이미지 빌드
` 이미지레이어 도커 이미지는 저장소를 효율적으로 사용하기 위해서 레이어드 파일 시스템으로 구성 이미지를 다운로드 받을 때 여러개의 pull이 실행되는데 이것은 여러개의 레이어를 의미한다. 레이어드 파일 시스템은 공간을 효율적으로 사용할 수 있다. 이미지를 저장하고 전송할 때 스토리지와 네트워크 사용... Read More
-
(도커) 이미지와 컨테이너
이미지와 컨테이너 이미지란? 제작 단계에서부터 소프트웨어와 소프트웨어를 실행하기 위해서 필요한 모든 요소들을 미리 준비해서 압축한 파일 애플리케이션 서버와 이미지 도커를 사용하는 목적은 컨테이너 내에서 웹서버나 웹 애플리케이션 같은 소프트웨어를 운영... Read More
-
(도커) 가상화 기술
가상화 기술 가상화 기술이란? 물리적인 컴퓨터 환경에서 논리적인 컴퓨터 환경을 만드는 기술 컴퓨터 안에서 여러 컴퓨터를 실행하는 것을 말한다. 한대의 컴퓨터로 여러 개의 논리적인 OS 환경을 만들어 각 OS에 리소스를 분해하여 실행한다. 각 OS는 논리적으로 분리되어 있어 다른 O... Read More
-
(컴퓨터 네트워크) 컴퓨터 네트워크 보안
네트워크 보안 네트워크 보안 - 기밀성, 메시지 무결성, 종단점 인증, 운영 보안을 고려한 네트워크에서의 안전한 통신 기밀성 - 송신자와 지정된 수신자만이 전송되는 메시지 내용을 이해할 수 있어야한다. 메시지 무결성 - 통신하는 내용이 전송 도중에 변경되지 않아야한다. 종단점 ... Read More
-
(컴퓨터 네트워크) 네트워크 계층 - 제어 평면
라우팅 알고리즘 라우팅 알고리즘의 목표는 송신자부터 수신자까지 라우터의 네트워크를 통과하는 좋은 경로를 결정하는 것이다. 그래프 : G(N, E)로 나타내고, N과 E는 각각 노드와 엣지의 집합이고, 하나의 엣지는 집합 N에 속하는 한 쌍의 노드로 표시된다. 라우팅 알고리즘의 분류 중앙 집중형... Read More
-
(스프링 핵심원리) 빈 스코프
빈 생명주기 콜백 객체의 초기화와 종료 작업을 진행하는 메소드 스프링 빈은 ‘객체 생성 -> 의존관계 주입’ 라이프사이클을 가진다. 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 스프링은 스프링 컨테이너가 종료되기 직전... Read More
-
(스프링 핵심원리) 컴포넌트 스캔과 의존관계 자동 주입
컴포넌트 스캔 컴포넌트 스캔이란? 스프링은 스프링 빈을 수동으로 설정 정보를 통해 등록할 수 도 있지만, 설정 정보 없이 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 컴포넌트 스캔은 @Component애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다. @Config... Read More
-
(스프링 핵심원리) 스프링 컨테이너
스프링 컨테이너 스프링 컨테이너란? 자바 객체의 생명 주기를 관리하고, 생성된 자바 객체들에게 추가적인 기능을 제공하는 핵심 컴포넌트이다. 스프링 컨테이너에서 자바 객체를 빈(Bean)이라 하고, 빈들의 생성, 관리, 제거 등 생명주기를 관리하고, 빈 간의 관계를 설정한다. 스프링 컨테이너는... Read More
-
(스프링 핵심원리) 객체 지향 원리
좋은 객체 지향 설계의 5가지 원칙 SOLID 원칙 단일 책임 원칙 (SRP / Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 개방-폐쇄 원칙 (OCP / Open Closed Principle 소프... Read More
-
(컴퓨터 네트워크) 트랜스포트 계층
트랜스포트 계층 프로토콜 종단 시스템 사이의 IP 전달 서비스를 종단 시스템에서 동작하는 두 프로세스 간의 전달 서비스로 확장하는 역할 TCP (Transmission Control Protocol) 패킷 단위 - 세그먼트 ... Read More
-
(컴퓨터 네트워크) 네트워크 계층 - 데이터 평면
네트워크 계층 개요 네트워크 계층의 역할 - 송신 호스트에서 수신 호스트로 패킷을 전달하는 것 네트워크 계층의 중요한 기능 포워딩(전달) : 패킷이 라우터의 입력 링크에 도달했을 때 라우터는 그 패킷을 적절한 출력 링크로 이동시킨다. ... Read More
-
(컴퓨터 네트워크) 애플리케이션 계층
네트워크 애플리케이션 구조 클라이언트-서버 서버 - 항상 동작하고 있는 호스트 클라이언트 - 서버에게 서비스 요청을 하는 호스트 서버는 고정 IP주소라는 잘 알려진 주소를 가지고 ... Read More
-
(컴퓨터 네트워크) 컴퓨터 네트워크와 인터넷
인터넷의 구성요소 호스트(host) - 인터넷에 연결되는 모든 장치를 말하며 호스트는 통신 링크와 패킷 스위치의 네트워크로 연결된다. 종단시스템으로도 불린다. 링크(link) - 물리 매체로 구성되며 다양한 전송률을 이용하여 데이터를 전송하며 전송률은 초당 비트수를 의미하는 bps단위를 사용한다. 패킷(pac... Read More
-
(디자인 패턴) 싱글톤 패턴
싱글톤 패턴 싱글 톤 패턴이란? Read More
-
(Spring Boot) 스프링 MVC - 1
서블릿 @ServeletComponentScan 이 애노테이션을 추가하면 스프링 부트에서 서블릿을 직접 등록해서 사용 가능 서블릿 등록방법 서블릿 클래스에 서블릿 애노테이션 (@WebServlet(name = “서블릿 이름”, urlPatterns = “URL 매핑”))을 추가하면 HTT... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 10
프로필 화면 설계 등록된 포스트를 한번에 볼 수 있고, 포스트를 선택해서 들어갈 수 있는 프로필 화면을 설계해야한다. 포스트는 이미 등록되어 있기 때문에 적절한 UI를 설계하고 사용자의 포스트의 앞 이미지를 불러와 한 화면에 한번에 볼 수 있도록 설계하여야한다. <!DOC... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 9
프로필 기능 설명 프로필 기능은 이 프로젝트에서 핵심적인 내용이라고 말할 수 있다. SNS의 핵심이 자신의 프로필을 생성하고, 자신만의 스토리를 다른사람에게 공개하는 것인것 처럼 이 프로젝트에서도 커플들이 본인들의 사랑이야기, 데이트 내용 등을 프로필을 통해 다른 사람들에게 공개... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 8
인터셉터 개요 현재 로그인을 하지 않은 상태에서 메인화면과 프로필화면의 주소를 입력하더라도 들어가진다. 이는 기대했던 상황이 아니고, 로그인이 된 사용자만 메인화면과 프로필 화면으로 이동할 수 있도록 변경해야 한다. 컨트롤러수준에서 화면마다 화면에 들어갈 때마다 로그인 여부를 체크할 수도 있겠지만 ... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 7
연인관계 신청 기능 설계 개요 이 프로젝트에서 제일 중요한 기술은 연인 프로필을 생성하여 다른 연인들과 서로 자신들의 피드를 공유하는 것이다. 이러한 기술을 구현하기 위해서 연인관계를 연결하여 연인관계인 두 명의 유저가 하나의 프로필을 갖도록 해야한다. 회원가입 기능을 구현할... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 6
데이터베이스 연결 DBMS 설치 많은 DBMS가 존재하지만 그중에서 간단한 h2 database라는 DBMS를 사용할 것이다. 버전은 1.4.200을 사용할 것이다. 최근에 많은 버전이 새로 출시되었지만 일부 오류가 발생하는 곳이 생겨 이전버전인 1.4.200을 사용할 것이다. 다운... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 5
도메인 사용자가 로그인을 하기 위해서 아이디와 비밀번호를 입력하면 그 정보를 담을 주머니가 필요하고, 입력된 정보와 회원정보가 일치하는지 확인하는 작업이 필요하다. 도메인 클래스 설계 @Data public class LoginForm { @NotEmpty pr... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 4
패키지 구조 패키지는 크게 domain과 web으로 나눌 것이다. domain에는 domain, repository, service 등의 핵심 비지니스 업무 영역을 포함할 것이고, web에는 controller 등 웹페이지 관련 영역을 포함할 것이다. 따라서, web이 다른 것... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 3
템플릿 레이아웃 하나의 웹 사이트의 화면들은 공통 영역이 많이 있다. 보통은 똑같은 navigation bar, footer 등이 웹사이트의 대부분의 화면에 포함된다. 이러한 공통 영역들을 html파일마다 추가해주는 것을 비효율적이기 때문에 타임리프의 ‘템플릿 레이아웃’기능을 사용하여 하... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 2
기능 설계 로그인 및 커플 연결 로그인, 커플 연결 기능을 통해서 유저마다 웹 어플리케이션을 이용할 수 있는 권한을 나누려고 한다. 로그인은 사용자가 회원가입을 통해서 아이디와 암호를 생성하고, 입력을 통해 웹 사이트에 접속하는 기능을 말하고, 커플 매칭은 로그인한 사용자가 다른 로그인한 사용자와 서로 연결되어 커플로 지정하는... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 1
프로젝트 생성 먼저 개발을 하기 위해서 프로젝트를 생성해야한다. Spring은 spring initializr 이라는 프로젝트 생성 사이트를 제공한다. 바로가기 - spring initializr 이 프로그램을 이용하면 Spring 프로젝트 파일을 매우 간편하게 생성할 수 있다. 필자는 위와 같이 ... Read More
-
(Spring Boot) 웹 개발 프로젝트 - 0
진행하기에 앞서 이전에도 수많은 웹 개발 프로젝트를 진행했지만, 이전에 했던 프로젝트들은 Spring에 대한 지식이 충분하지 않은 상태로 하나하나 코드를 찾아가면서 진행했었다. 그러면서 들었던 생각이 Spring에 확실하게 공부한 후에 내가 개발하고 싶은 웹을 개발해보면서 Spring을 완전히 나의 기술로 만들고 싶었... Read More