[ Computer Science ]

[ Computer Science ]/프로그래밍 이론

[Spring / 스프링 부트 핵심 가이드] 레이어드 아키텍처, SpringMVC

레이어드 아키텍처(Layered Archiecture) 레이어드 아키텍처는 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어(계층)로 묶어 수평적으로 구성한 구조를 말한다. 일반적으로 프레젠테이션 계층, 비즈니스 계층, 데이터 접근 계층의 3계층으로 구성된다. (4 계층이라고 표현할 경우, 인프라 계층(데이터베이스)까지 포함한 것이다.) 우리가 일반적으로 Spring을 배우고, 사용하다 보면 자연스럽게 Controller - Service - Repository의 순서로 데이터베이스에 접근하고, 역순으로 응답을 전달하게 된다. 여기서 각각 Controller가 프레젠테이션 계층, Service가 비즈니스 계층, Repository가 데이터 접근 계층이라고 보면 된다. 프레젠테이션 계층(Present..

[ Computer Science ]/프로그래밍 이론

[Spring / 스프링 부트 핵심 가이드] 제어의 역전(IoC, DI, AOP)

스프링 프레임워크(Spring Framework) 스프링 프레임워크(이하 스프링)는 Java에서 가장 많이 사용하는 프레임워크다. 스프링은 Java 언어로 엔터프라이즈급 개발을 편리하게 만들어주는 '오픈소스 경량급 애플리케이션 프레임워크'라고 불리고 있다. 여기서 엔터프라이즈급 개발은 기업환경을 대상으로 한 대규모 데이터를 처리할 수 있는 환경을 말한다. 즉, Java 언어를 이용한 대규모의 프로젝트를 보다 쉽게 만들 수 있도록 도와준다는 것이다. 스프링의 핵심 가치는 아래와 같다. "애플리케이션 개발에 필요한 기반을 제공해서 개발자가 비즈니스 로직 구현에만 집중할 수 있도록 하는 것" 여러 가지 기술을 이용하여 복잡한 요소들을 스프링 프레임워크에 위임하고, 개발자는 비즈니스 로직 개발에만 집중할 수 있..

[ Computer Science ]/Linux 리눅스

[리눅스] VI 에디터 명령어 정리

Vi 에디터 Vi 에디터는 전통적인 유닉스 계열의 에디터이며, Visual Editor의 줄임말이다. Vi 에디터에서 조금 더 개선하여 자동화, 시각화 메뉴 등을 추가한 Vim(Vi improved)도 존재한다. 리눅스 셸에서 vi 에디터 설치 sudo apt-get install vim vi 에디터 열기 해당 이름의 파일이 없으면 새로 생성 있으면 해당 파일 open vi test.txt 저장, 종료 :wq //저장하고 종료 (write quit) :q //종료 (quit) vim의 4가지 모드 일반 모드 입력 / 명령 모드에서 [esc]를 입력하여 일반모드로 변경한다. 입력(편집) 모드 입력모드로 전환 : 일반 모드에서 [a], [i] 입력 (a : 커서 뒤로 입력, i : 커서 위치에 입력) 삭제 ..

[ Computer Science ]

[CS/Network] TCP와 UDP 프로토콜

TCP/IP 프로토콜 TCP/IP는 인터넷 통신 시 실제로 사용하는 표준 모델이다. OSI 7 계층의 이론적인 표준 모델의 일부를 묶어 TCP/IP 4 계층으로 나타낸다. TCP(Transmission Control Protocol) TCP는 3-way, 4-way handshake과정을 통해 데이터를 신뢰성 있게 전송할 수 있도록 하는 프로토콜이다. IP 위에서 동작하며, 데이터 전달을 보증하고 보낸 순서대로 받게 해준다. TCP 헤더에 SYN, ACK, FIN, RST, Source Port, Destination Port, Sequence Number, CheckSum 등의 요소들을 이용해 데이터의 정보를 다룬다. IP (Internet Protocol) IP는 데이터 송수신 시에 패킷 교환 방식으..

[ Computer Science ]/Web & Network

[Network] OSI 7계층과 TCP/IP 4계층

OSI 7 LayerOSI 7 Layer란 국제 표준화 기구에서 정의한 모델로, 네트워크 통신이 일어나는 과정을 7단계로 나눈 것이다.국제 표준으로 설정하였지만, 실제로는 OSI 7 Layer 모델보다는 TCP/IP 모델을 사용한다.그렇지만 TCP/IP 모델 또한 OSI 7 Layer을 변형, 통합한 것이기 때문에 OSI 7 Layer도 알아둘 필요가 있다. 우선 OSI 7 Layer는 아래와 같이 7개의 계층으로 나뉜다.1 계층 - 물리(Physical) 계층 : 전기적, 기계적 특성을 이용하여 시스템 간 물리적인 연결을 담당한다.2 계층- 데이터 링크(DataLink) 계층 : 네트워크 기기간 데이터 전송을 관리하고, 물리 주소 부여 3 계층 - 네트워크(Network) 계층 : 다른 네트워크와의 데..

[ Computer Science ]/Web & Network

[Web/Network] REST API란?

REST (Representational State Transfer : 자원의 상태 전달) 자원(resource)의 표현(representation)에 의한 상태 전달 URI를 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 CRUD 처리 방법 지정 Create : 생성(POST) Read : 조회(GET) Update : 수정(PUT) Delete : 삭제(DELETE) REST API REST 기반으로 서비스 API를 구현한 것이다. 마이크로 서비스, Open API 등에서 사용된다. 마이크로 서비스 : 마치 객체지향에서 작은 기능을 분리하듯이, 단일 애플리케이션을 느슨하게 결합된 서비스의 모임으로 구조화하는 소프트웨어 개발 기법이다. Open API : 누구나 사용할 수 있도록 공개..

[ Computer Science ]/Web & Network

[Web/HTTP] Web의 3요소와 HTTP 프로토콜, 특징

Web이란?World Wide Web이란 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간을 의미한다.간단히 줄여서 www나 w3, web이라고 가장 많이 부른다.www : World Wide Webw3라고도 부른다.web의 3요소 : URI, HTTP, HTMLURI(Uniform Resource Identifier)Uniform: 리소스 식별하는 통일된 방식Resource: 자원, URI로 식별할 수 있는 모든 것(제한 없음)Identifier: 다른 항목과 구분하는데 필요한 정보HTTP (Hypertext Transfer Protocol)클라이언트 - 서버 간 통신HTML (Hyper Text Markup Language)하이퍼미디어 포맷XML을 바탕으로 한 범용 문서 포맷이를 이용하여..

[ Computer Science ]/Web & Network

[Web] 쿠키(Cookie)와 세션(Session)

쿠키와 세션 HTTP는 무상태(Stateless) 프로토콜이다. 따라서 통신이 끝나면 상태(정보)를 유지하지 않는다. 이를 보완하기 위해 사용하는 것이 쿠키와 세션이다. 통신이 끝나도 이전 응답에 대한 정보가 필요할 때도 있고, 어떤 상태를 유지해야 할 때도 있다. 예를 들면 한번 로그인하면 로그아웃 전까지 로그인 상태가 유지되어야 한다. 이때, 쿠키를 이용하여 무상태 프로토콜인 HTTP에서 상태를 유지할 수 있다. 서버에서 클라이언트로 쿠키를 전달하면, 클라이언트는 그 쿠키를 저장해 뒀다가 HTTP 요청 시 서버로 전달한다. 그러나 쿠키는 보안 문제가 있다. 우선 쿠키의 값은 클라이언트에서 쉽게 조회, 변경할 수 있다. 그 값을 이용해서 악의적인 요청을 할 수도 있다. 따라서 사용자가 알아볼 수 없는 ..