가상화존재하는 컴퓨터는 아니지만 마치 컴퓨터가 있는 것처럼 만들어주는 기술실제 존재하는 것 = 물리적 가상으로 존재하는 것 = 논리적물리적으로 존재하는 하나의 컴퓨터에 논리적으로 여러개의 컴퓨터를 만들어서 사용합니다.가상화 기술을 사용하는 이유만약 한대의 컴퓨터에서 4개의 애플리케이션을 운영한다고 했을때 하나의 애플리케이션에서 문제가 생기면 다른 애플리케이션에도 문제가 생길 위험이 있습니다.하지만, 가상화 기술을 사용해서 한 대의 컴퓨터에서 여러 대의 논리적 OS 환경을 만들어서 사용한다면 이는 논리적으로 격리된 상황이기 때문에 하나의 애플리케이션에서 문제가 생긴다고해도 다른 애플리케이션은 안전하게 운영이 가능합니다.가상화 기술의 종류하이퍼바이저(VirtualBox, vmware 등)컨테이너(Docker..
서버네트워크 상에서 다른 컴퓨터(클라이언트)에게 서비스를 제공하는 컴퓨터 또는 소프트웨어서버의 주요 기능데이터 저장 및 관리 : 서버는 대량의 데이터를 저장하고, 이를 필요로 하는 클라이언트에게 제공하는 역할을 합니다.리소스 공유 : 네트워크 상의 여러 클라이언트가 프린터, 파일, 애플리케이션 등 다양한 리소스를 공유할 수 있도록 합니다.응용 프로그램 서비스 : 웹 서버, 메일 서버, 데이터베이스 서버 등 특정 응용 프로그램을 실행하고 클아이언트가 이들 서비스에 접근할 수 있게 합니다.보안 관리 : 네트워크 트래픽을 모니터링, 데이터 접근 권한을 관리, 시스템 보안을 유지합니다.서버의 종류웹 서버 : 클라이언트의 HTTP 요청을 처리하여 웹 페이지를 제공하는 서버입니다. 예) Apache, NginxDB..
모든 코드는 Github에 올라와 있습니다.프로젝트 생성WebRestController응답을 정상적으로 하는지 간단하게 확인 PostsSaveRequestsetter를 사용하는 이유Controller에서 @RequestBody로 외부에서 데이터를 받는 경우엔 기본생성자 + set메소드를 통해서만 값이 할당된다.Entity 클래스로 Request/Response를 하지 않는 이유Entity 클래스는 매우 중요한 역할을 하는 클래스이다.다른 많은 클래스들이 Entity 클래스를 중심으로 동작을 하기 때문에 변경이 있어서는 안된다.Request나 Response용 DTO를 따로 만들어서 view에 맞는 스펙으로 운영해야한다.view Layer와 DB Layer를 역할 분리를 하는 것이 좋다.properties..
SOP(Same-Origin-Policy)같은 출처의 자원만을 허용여기에서 "출처"라는 것은 다음 세 가지 요소로 구성된다.아래 세 가지 요소가 모두 같아야 동일한 출처로 본다.프로토콜: http, https호스트: www.example.com포트: 80, 443예를 들어http://www.ecample.com와 http://www.example.com/page2는 동일한 출처이다.- 프로토콜:호스트:포트가 모두 같고 Path만 추가되었기 때문이다.하지만, https://www.example.com과 http://www.example.com은 다른 출처이다.- 호스트:포트가 같더라도 프로토콜이 다르기 때문에 다른 출처이다.기본적으로 웹 브라우저는 SOP를 사용한다. 그래서 다른 출처에서 API요청 등을 ..
1. REST API란?? Representational state transfer의 약자로 2000년에 Roy Fielding(로이 필딩)의 논문에 처음 등장한 용어입니다. REST는 분산 하이퍼미디어 시스템의 구조화 스타일에 대해 다룹니다. ‘분산 하이퍼미디어 시스템’은 웹을 지칭합니다. 클라이언트와 서버 간의 효율적인 통신을 지원합니다. 2. REST 구성 자원(RESOURCE) - HTTP URI 행위(Verb) - HTTP METHOD 표현(Representations): 자원에 대한 행위의 내용 - HTTP Message Pay Load 3. REST의 특징 Uniform Interface(일관된 인터페이스) 리소스가 URI로 식별돼야 합니다. HTTP method로 리소스를 조작해야 한다. ..
안전한 클래스 설계를 설명하기 전에 Java에서 클래스에 대해 간략하게 설명하자면 클래스는 코드를 작성하기 위한 초기 단계, 즉 객체 설계도의 역할을 합니다. 객체 == 클래스라고 혼동해서는 안됩니다. 객체를 표현하기 위한 수단이 클래스일 뿐입니다. 1. 생성자를 통한 변수 초기화 public class User { private String name; private Team team; public User(String name, Team team) { this.name = name; this.team = team; } } 생성자를 통해 변수를 초기화하면 예상하지 못한 값이 들어올 수 있다. 매개변수에 전혀 관계가 없는 값을 넣거나 null을 넣어도 할당이 가능하기 때문이다. //잘못된 값 초기화 Use..
DTO란? DTO란 Data Transfer Object의 약자로, 계층 간 데이터 전송을 위해 도메인 모델 대신 사용되는 객체이다. 여기서 계층이란 Presentation(View, Controller), Business(Service), Persistence(DAO, Repository)를 의미한다. DTO의 특징 데이터를 저장하는 용도로만 사용되어야 한다. 데이터에 대한 getter, setter 만을 가져야 한다. 저장, 조회를 제외한 어떠한 비즈니스 로직도 있어서는 안 된다. 하지만, 데이터 전송을 위해 직렬화, 역직렬화 메커니즘은 포함할 수 있다. 직렬화란 객체를 JSON, XML, 바이트스트림 등으로 변환하는 것을 의미한다. 역직렬화는 직렬화의 반대이다. 도메인 대신 DTO를 사용하는 이유 ..
URIURI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다.Uniform: 리소스 식별하는 통일된 방식Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)Identifier: 다른 항목과 구분하는데 필요한 정보URL: Uniform Resource LocatorURN: Uniform Resource NameURL, URNURL - Locator: 리소스가 있는 위치를 지정URN - Name: 리소스에 이름을 부여위치는 변할 수 있지만, 이름은 변하지 않는다.urn:isbn:3948271048URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화되지 않음URL분석https://www.google.com/search?q=hello&hl=koURL전체문..
학습 목표왜?? 언제?? 어떻게?? 사용하는가??SOLID의 정확한 의미를 파악SOLID를 따르며 설계를 하면 좋은 점SOLID클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리SRP: 단일 책임 원칙(Single Responsibility Principle)OCP: 개방 폐쇄 원칙(Open/Closed Principle)LSP: 리스코프 치환 원칙(Liskov Substitution Principle)ISP: 인터페이스 분리 원칙(Interface Segregation Principle)DIP: 의존관계 역전 원칙(Dependenxy Inversion Principle)SRP 단일 책임 원칙(Single Responsibility Principle)한 클래스는 하나의 책임만 가져..
학습목표 객체지향의 의미 장점 객체지향 - 다형성 역할과 구현을 분리 예시 1 - 자동차 자동차 역할이 있다. 구현 - 아반떼, K3, 테슬라 모델 3 운전면허를 가진 사용자는 아반떼를 타다가 k3를 타도 새로 공부를 할 필요가 없다. 운전을 하던 대로 하면 된다. 자동차의 종류가 어떤 것 인지는 중요하지 않다. 예시 2 - 공연(로미오와 줄리엣) 로미오 역할과 줄리엣 역할이 있다. 구현 - 로미오, 줄리엣을 공연하는 사람 로미오와 줄리엣 역할을 연기할 수 있는 사람이라면 누가 그 역할을 하던지 중요하지 않다. 다른 예시 키보드, 마우스, 세상의 표준 인터페이스들 정렬 알고리즘(어떤 알고리즘을 사용하던 중요 X) - 기능만 똑같다면 더 나은 성능의 알고리즘으로 교체해도 무관하다. 할인 정책 로직 정리 역..