이번에는 HTTP의 메서드에 대해서 알아보려고한다. 우리가 HTTP API를 설계해야하는 상황이 왔을 때 우리는 HTTP 메서드에 대해서 알아두어야만 한다. 예를들어 조회기능, 등록 기능, 수정 기능, 삭제 기능등 여러가지 기능을 구현 할 때에 말이다. 그렇다면 많이 쓰이는 HTTP의 메서드들에 대해서 알아보자 먼저 Get 메서드이다. Get : 리소스 조회 - 서버에 전달하고 싶은 데이터는 query를 통해서 전달함 (메시지 바디를 통할 수도 있지만 권장하지 않는다.) *** Get 방식(예제) Get /members/100 HTTP/1.1 Host: localhost:8080 이런 식으로 접근 = 요청 members/100 안에있는 메시지 내용을 가져와서 응답 데이터를 보낸다. 다음..
이번 글에서는 HTTP에 대해서 알아보려고 한다. HTTP (HyperText Transfer Protocol) HTTP는 말그대로 HyperText를 전송하기 위한 프로토콜이다. (HyperText란 기존의 그냥 문서에 쓰이는 텍스트가 아니라 비선형적인 신개념 텍스트라는 의미에서 만들어진 용어이다. 예를 들어서 하이퍼텍스트에는 하이퍼링크를 통해 다른 문서로 이동할 수도 있는 기능들이 존재한다. ) 주로 HTML 문서를 주고 받는데 쓰인다. (여기서의 HT도 하이퍼텍스트이다.) 지금은 텍스트뿐만이 아니라 이미지, 음성, 영상, 파일 등등 거의 모든 형태의 데이터를 전송이 가능하다. 바야흐로 HTTP의 시대라고 할 수 있을만큼 요즘에는 HTTP를 어디에서나 많이 사용하고 있다. 이 HTTP에..
이번에는 URI에 대해서 알아보려고 한다. 평소 우리가 사용하던 URL은 이 URI의 하위 개념이다. 어떤 느낌인지 자세히 알아보자. URI (Uniform Resource Identifier, 통합 자원 식별자) URI는 인터넷에 있는 자원에 접근하기 위한 식별자이다. 위치나 이름으로 자원에 접근할 수 있으며, 인터넷에서의 기본적인 요소이기 때문에 항상 IP와 함께 있는 정보이다. 이런 URI는 아래 두 개념이 존재한다. URL (Uniform Resource Locator, 자원의 위치를 지정) 우리가 가장 흔히 들어보던 URL이다. 자원에 접근할 수 있는 위치를 나타내는 요소이다. 문법도 우리가 가장 많이 봐왔던 주소랑 비슷하다. Protocol://[userinfo@]host[:po..
이번에는 DNS에 대해서 알아보려고 한다. 이전 글에서 설명했다 싶이 DNS는 IP 주소를 일일히 입력하지 않아도 통신을 할 수 있도록 도와주는 요소이다. DNS(Domain Name System) DNS는 호스트의 네트워크 주소를 도메인 이름으로 변경하거나 혹은 그 반대의 역할을 수행할 수 있도록 개발된 기술이다. 우리가 흔히 사용하는 www.naver.com 같은 요소들이 바로 도메인 이름이다. 쉽게 예를 들자면 전화번호부 같은 느낌으로 알아두면 좋을 것 같다. 010-1234-5678 같은 번호를 '홍길동' 같은 이름으로 저장하는 것 처럼 같은 원리이다. 그렇기에 IP 주소를 잊어버리거나 변경되어 모르게되는 상황이 오더라도 이 도메인 이름을 통해서 접속 할 수 있기 때문에 문제가 되지 않..
이번엔 저번 IP 글에 이어서 Port에 관해서 간단히 정리해보겠다. Port란 네트워크 서비스나 특정 프로세스를 식별하기 위한 것이다. 예를 들어, 한 컴퓨터에서 게임이나 음악을 동시에 실행했을 때 둘다 통신을 위한 정보가 필요할 것이다. 요청을 보내고 돌아올 때, 각각의 정보가 어느 포트로 가야될 지 정해져있지 않다면 정보가 잘못 전달되는 일이 발생할 것이다. 이런 것을 방지하기 위해서 포트를 특정 구역을 나누어 두어서 통신을 원할하게 할 수 있게끔 하는 것이다. 총 0 ~ 65535까지 할당이 가능하며, 0 ~ 1023 까지는 잘 알려진 포트이기에 사용하지 않는 것이 좋고, 다른 번호들이 보통 사용된다. 흔히 들어본 포트로는 FTP - 20, 21 TELNET - 23 HTTP - 80 ..
오늘은 CDN에 대해서 알아보려고한다. 최근에 개발하면서 CDN에 대해서 알게되었는데, 사용하면서도 도무지 이게 뭐고 어떤 원리로 작동하는지 궁금하였기에 알아보게되었다. CDN (Content Delivery Network, 콘텐츠 전송 네트워크) CDN이란 지리적으로 분산된 여러 개의 서버를 말한다. 웹 콘텐츠를 사용자와 가까운 곳에서 전송함으로써 지연시간을 줄이고 전송속도를 높일 수 있다. 다른 장점으로는 보안성과 가용성이있다. CDN 제공업체는 실제 사용자가 아닌 해커나 다른 트래픽이 접속하려 한다면 방화벽 역할을 하여, DDos 공격 등의 보안성에서도 강한 모습을 보여줄 수 있다. 또한, 많은 트래픽이 몰린다면 아무리 대형업체라도 힘들어질 수 있기 마련인데 이를 CDN 같은 기술로 ..
오늘부터는 DB와 SQL에 대한 전반적인 내용을 좀 정리해보려고한다. 최근에 바쁜 일이 있기도했고 솔직히 좀 나태해져서 개인공부를 너무 소홀히 하였다. 초심을 찾고자 하는 의미로 항상 정리해야지 싶었던 내용 중 하나인 DB와 SQL에 대해서 기초부터 살펴보려고한다. DB란 무엇인가? DB(DataBase)란 우리가 아는대로 데이터들의 집합이다. 여러 사람들이 공유해 사용할 목적으로 만들어져 관리된다. 이 DB를 관리하기 위해서 사용되는 Oracle, Ms-sql 등 같은 시스템이 DBMS(DataBase Management System) 이다. DBMS는 DB를 더 효율적으로 관리할 수 있도록 해주며 보안이나 유지보수 같은 측면 등 많은 장점이 있기에 거의 필수로 사용된다. 그렇기에 거의 DB =..
오늘은 통신할 때 사용되는 프로토콜에 대해 알아보려고 한다. 컴퓨터 끼리의 데이터 전송을 위해서는 목적지에 대한 정보가 필요한데, 이번에 설명할 IP (Internet Protocol) 가 바로 목적지의 주소라고 생각하면 된다. IP Adress 에 패킷(통신 단위)을 통해 데이터를 전송하면 비로소 통신을 하게되는 것이다. IP 패킷 안에 데이터들을 담는데, 그 값들로는 출발지 IP, 목적지 IP 등의 정보들과 데이터를 담아서 함께 전송하게되는 방식이다. 하지만 이런 IP 통신에는 한계가 있다. 목적지의 PC가 꺼져있으면 패킷이 소실되며, 패킷이 꼬여버린다면 정상적인 데이터 전달이 이루어지지 않을 수 있다. 이를 위해 만들어진 것이 TCP/IP와 UDP/IP 이다 먼저 TCP/IP 에 ..
문제점 이번에 겪었던 오류는 Spring boot를 통해 개발을 하다가 겪게 되었다. Html 파일에서 css나 img 태그를 통해서 이미지를 넣으려는데 로컬파일에서는 잘 보이던 이미지들이 Run을 통해 서버를 띄우면 나타나지 않는 나타나지 않는 이슈였다. 30분이 넘게 경로를 바꿔보면서 해결되도록 노력해봤지만, 아무것도 달라지지 않았다. 그 후 여기저기 구글링을 해보면서 알아보았고 무엇이 잘못 되었는지 알 수 있게 되었다. Chrome에서의 오류코드는 다음과 같았다. ERR_ABORTED 404 해결 이 오류코드의 이유는 다름아닌 경로 설정 문제였다. Spring boot의 WebProperties.java 파일에 아래와 같은 내용을 확인 할 수 있다. private static final String..
이번 글에서는 빈 스코프에 대해서 알아보려고 한다. 일단 빈 스코프라는 단어가 조금 생소하기도 해서 짚고 넘어가겠다. 빈 스코프는 빈이 존재할 수 있는 범위를 말한다. 저번 글에서는 빈의 생명주기를 살펴본 만큼 이번에는 어느 범위 까지 존재할 수 있는 가를 알아보려는 것이다. 빈 스코프의 종류로는 세가지가 있다. 싱글톤 전에도 설명했겠지만 싱글톤 빈은 객체가 1개로 유지된다. 스프링에서 기본적으로 적용되는 빈이기도 하며, 스프링 컨테이너의 시작부터 종료까지 1개의 객체로 유지되는 것이 특징이다. 프로토타입 프로토타입 빈은 싱글톤과는 반대로 빈이 요청될 때마다 초기화 메서드가 호출 된다. 프로토타입 빈의 스코프는 스프링 컨테이너가 시작 될 때 한 번 초기화가 되며, 그 뒤로는 관리를 받지않기에 ..
이번 글에서는 빈의 생명주기 콜백에 대해서 알아보려고 한다. 애플리케이션 구동 환경에서 원하는 객체를 제대로 사용하려면 생명주기에 대해서는 꼭 알아둬야 한다. 시작 지점에 DB 연결작업이나, 종료 지점에 연결 종료 작업 등은 코딩에서 필수이다. 이전에 안드로이드 앱 코딩 할 때도 생명주기는 매우 중요했었던 기억이 있다. 이번에는 스프링 빈에 대한 생명주기에 대해 자세히 알아 볼 것이다. 스프링 빈의 이벤트 생명주기 스프링 컨테이너 생성 => 스프링 빈 생성 => 의존관계 주입 => 초기화 콜백 => 사용 => 소멸 전 콜백 => 스프링 종료 우리가 스프링 빈을 제대로 사용하려면 의존관계 주입까지 끝난 상태여야만 사용할 수 있게 된다. 이런 상황을 우리는 콜백 메서드를 통해서 알 수 있고, 이 콜백..
이번에는 DAO와 DTO, VO 그리고 Entity에 대해서 알아보려고한다. 개발을 하다보면 DB를 거의 사용해야하다보니까 생각보다 많이 들어보게 되는 주제이다. 실제로 옛날에 개발을 해보긴 했는데 잘 기억은 안나기도 하고, 이번 기회에 자세히 알아보도록 하자. 먼저 DAO에 대해서 알아보도록 하자. DAO(Data Access Object, 데이터 접근 객체) DAO는 말 그대로 데이터에 접근하기 위해서 만들어지 객체를 말하는데, 주로 비즈니스 로직과 데이터 접근 로직을 분리하기 위해서 주로 쓰인다. DB에 접근하기 위해서는 연결을 해야하는데, 이러한 연결은 한 두번만 일어나는 것도 아니고 여러 번 일어날 수 있다. 비즈니스 로직에서 많은 연결과 로직을 다 처리하기엔 무리가 있으므로 DB에 접근..