본문 바로가기

전체 글

(49)
[Spring] Bean Bean Spring 에서는 Spring Container에 객체들을 저장하여 객체끼리의 의존성을 주입해주는 역할을 합니다. 이때 Spring Container에 등록되는 객체들을 Bean이라고 합니다. 특징 @Configuration이 선언된 클래스의 메소드에서 사용가능합니다. 메소드의 반환객체가 스프링 Bean 객체임을 선언하는 작업입니다. Bean의 이름은 기본적으로 메소드 이름이고, 원한다면 바꿀 수 있습니다. Bean을 등록하는 방법 @Component Spring Boot에서는 클래스 선언부 위에 @Component를 선언하면 Bean으로 등록해줍니다. 자주 사용하는 @Controller, @Service, @Repository는 모두 @Component를 포함하고 있습니다. 직접 등록 Bea..
[Spring] Spring MVC Spring MVC Spring MVC는 웹 애플리케이션을 빌드하기위한 프레임워크입니다. 또한 Spring MVC는 MVC 패턴을 따르며 IOC-DI등을 구현할 수 있습니다. Spring MVC 동작구조 서블릿(Servlet)은 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술입니다. 일반적으로 서블릿은 서블릿 컨테이너에서 관리합니다. 서블릿 컨테이너는 서블릿 인스턴스를 생성하고 관리하는 역할을 하는 주체로서 톰캣은 WAS의 역할과 서블릿 컨테이너의 역할을 수행하는 대표적인 컨테이너입니다. Servlet Container 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리합니다. 서블릿 객체는 싱글톤 패턴으로 관리합니다. 멀티 스레딩을 지원합니다. Spring에서는 Disp..
[Spring] @Transactional Transaction 사전적 정의로 "거래"를 뜻하는데요. Transaction 하면 나오는 대표적인 개념이 ACID입니다. ACID Atomicity : 하나의 Transaction 내에서 실행한 작업들은 하나의 단위로 처리 Consistency : Transaction은 일관성 있는 데이터베이스 상태를 유지 Isolation : 동시에 실행되는 Transation들이 서로 영향을 미치지 않도록 격리 Durability : 트랜잭션을 성공적으로 마치면 결과가 항상 저장 따라서 Transaction이란 위 조건들을 모두 만족하는 하나의 단위를 생각하면 될 것 같습니다. @Transactional Spring에서는 Transaction 설정을 애노테이션 기반으로 사용할 수 있습니다. 이를 선언적 트랜잭션이..
[Network] URI, URL, URN URI, URL, URN 그림에서 보시다싶이 URL과 URN은 URI에 포함되는 의미입니다. 예시 주소를 통해 구분을 하면 아래와 같습니다. URI Uniform Resource Identifier의 약자로 특정 리소스를 식별하는 통합 자원 식별자입니다. 인터넷에 있는 자원이 어디에 있는지 자원 자체를 식별하는 방법입니다. URL Uniform Resource Locator의 약자로 인터넷에 있는 자원이 어디에 있는지 자원의 위치를 식별하는 방법입니다. URL은 웹 사이트 주소뿐 아니라 네트워크 상의 자원을 나타내는 표기법입니다. URN Uniform Resource Name의 약자로 인터넷에 있는 자원의 이름을 식별하는 방법입니다. 위치에 독립적인 자원을 위한 지시자입니다. 예시 http://mirr-..
[Spring Security] OAuth OAuth Open Authorization 의 약자로 인증을 위한 개방형 프로토콜입니다. 대표적으로 구글, 페이스북, 카카오, 네이버 등에서 간편 로그인을 제공합니다. 역할 OAuth는 아래 4개의 역할이 각자의 임무를 수행합니다. 이름 역할 Resource Owner Third-Party Application 에 회원가입이 되어있는 일반 사용자를 생각하면 됩니다. Client가 제공하는 어플리케이션을 사용합니다. Client Resource Owner의 개인정보를 토대로 Authorization Server에 접근 요청을 합니다. Authorization Server 권한을 관리해주는 서버입니다. 클라이언트의 권한을 파악하여 접근을 통제하고 Access Token을 발급하여 권한을 부여합니다. Res..
[Spring] Redis Redis 란 Remote Dictionary Server의 약자로 Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 비 관계형 데이터 베이스 시스템입니다. Cache Server Redis는 데이터를 저장하고 관리한다 했는데 왜 데이터베이스가 있는데도 Redis를 사용할까요? 그 이유는 Redis의 여러 장점들 때문입니다. 데이터베이스는 일반적으로 데이터를 디스크에 저장하게됩니다. 이는 비정상적으로 작업이 끝나도 데이터가 손실되지 않는다는 장점이 있지만 데이터를 가져오는 속도가 느리다는 단점이 존재합니다. 따라서 자주 호출되는 데이터를 대상으로 적용시키기 좋은 방법입니다. 하지만 자주 값이 바뀌는 데이터는 대상으로 적합하지 않습니다. 이유는 일일히 최신 데이터를 업데이트 시켜줘야하기 때..
[Spring Security] 보안 알고리즘 서버의 Security를 이해하려면 기초적인 보안 알고리즘을 아는 것은 필수입니다! 정보보안의 3요소 기밀성 (Confidentiality) 정보를 오직 인가된 사용자에게 허가합니다. ex) Snopping, 해킹에 의한 내부정보 노출 무결성 (Integrity) 비정상적인 변경이나 파기없이 완전하게 보존합니다. ex) 악성코드로 인한 파일 회손 가용성 (Availablity) 권한이 있는 사용자가 원할 때 바로 접근과 사용합니다. ex) DOS, DDOS로 인한 서비스 불능 대칭암호 암호화를 할 때 사용하는 키와 복호화를 할 때 사용하는 키가 동일한 암호 알고리즘입니다. 특정 키를 통해 단순한 방법부터 복잡한 방법까지 잘 활용해가며 평문을 변화시키는 것이라 이해하면 좋습니다. 예를들어 가장 단순한 방법..
[Network] HTTP/x.x HTTP는 Application Layer로 웹 서비스 통신에 사용됩니다. HTTP는 HTTP/1.0부터 HTTP/3까지 발전해왔습니다. HTTP/1.0 HTTP/1.0은 한 연결당 하나의 요청을 처리하도록 설계하였습니다. 이는 서버로부터 요청의 응답을 받을 때 마다 3-Way-Handshake 과정을 거쳐야하기에 굉장히 시간이 오래걸렸습니다. 이를 해결하기위해 이미지 스플리팅, 코드압축, Base64와 같이 용량을 줄이는 방식을 많이 사용하였습니다. HTTP/1.1 매번 TCP 연결을 하는 것이 아니라 한번 TCP 초기화를 한 이후 Keep-Alive라는 옵션을 통해 여러개의 파일을 송/수신할 수 있게 바뀌었습니다. 하지만 요청할 리소스 양에 비례해 대기시간이 길어지는 단점은 해결되지 않았습니다. 또한..