분류 전체보기 50

[AWS] Ubuntu / EC2 swap 메모리 설정

EC2 사용 중 프로젝트를 빌드하면 뻗는 상황이 발생했다. 일단 임시방편으로 swap 메모리를 주어서 해결함 swap 메모리란? 물리 메모리를 대신하여 사용하는 하드디스크 상의 공간 메모리가 부족할 때 하드디스크의 일부 공간을 메모리처럼 사용하는 것 (AWS EC2를 사용하는 경우, AWS에서 제공하는 컴퓨터의 하드디스크를 이용하는 것이다.) swap 메모리 사용 시, 메모리에 위치한 프로세스의 우선순위가 낮거나 사용도가 낮은 경우 다른 프로세스를 위해 이를 swap영역으로 이동시킬 수 있다. 이를 페이징이라고 함 swapping(스와핑) 메모리가 부족할 때 우선 하드디스크공간을 이용하고, 메모리에 여유가 생기면 다시 메모리를 사용하는 것 swapping 사용 방식 swap 파티션 : 파티션 중 하나를 ..

AWS 2022.06.15

[DevOps] Cloud

클라우드 컴퓨팅(Cloud Computing) 물리적인 컴퓨팅 리소스가 아닌, 가상 공간에 있는 컴퓨터를 대여하여 사용하는 것 장단점 장점 (특징) 초기 투자 비용 절감 및 운영 비용 절감 개발 환경 구성 시 필요한 자원(하드웨어, 소프트웨어, 애플리케이션 등)을 대여하고 사용한만큼만 비용을 지불함으로써 이러한 자원들의 구매 및 유지비, 인건비, 유지보수비용 등 절감할 수 있다. * 그러나 Cloud 서비스를 이용한다고 해서 무조건 비용이 절감되는 것은 아니다. 사용하는 서비스와 그 정도에 따라 비용이 부과되기 때문 개발 환경 구성 시간 단축 완성형 서비스(플랫폼, 애플리케이션 등)를 활용함으로써 시간 단축이 가능하다. 확장성 간편하게 서비스 확장이 가능 데이터 센터를 직접 구축하는 것이 아니므로, 필요..

DevOps 2022.06.15

[Spring] Spring Security - SecurityContextHolder와 ThreadLocal에 관한 의문

☞ 여기에서 SecurityContextHolder는 ThreadLocal을 사용하고 있다고 했다. ThreadLocal은 쓰레드 별로 생성되는 저장소로, 해당 쓰레드 내에서라면 어디에서든 사용할 수 있으며 다른 쓰레드와는 공유하지 않으므로 쓰레드끼리 꼬이는 일 없이 해당 쓰레드를 할당받은 사용자별로 Authentication객체가 생긴다고 한다. 초기 의문 사용자별로 쓰레드가 할당되는 거라고 하면 10,000명의 사용자가 있으면 10,000개의 쓰레드가 있어야 하는가? 쓰레드는 생성 비용도 크고, 생성 가능한 개수도 경우에 따라 상이하고 (가령 Spring의 WAS가 생성하는 ThreadPool에는 기본적으로 200개의 쓰레드가 생성됨) 각 쓰레드는 할당받은 요청에 대한 작업이 끝날 때 까지는 다른 요..

Spring 2022.06.15

[HTTP] HTTP 메서드

HTTP 메서드 클라이언트가 웹서버에게 요청하는 목적(종류)를 알리는 수단 주요 메서드 GET, POST, DELETE, PUT, PATCH GET 데이터 조회 캐싱이 가능하여 동일한 데이터를 한 번 더 조회할 경우 조회 속도가 빠름 body와 Content-Type이 비워져 있으며 주로 쿼리스트링으로 파라미터를 주고받음 body로 데이터를 전달할 수는 있으나 지원하는 곳이 많지 않으므로 권장x 조회 성공 시에는 body에 데이터 값을 담아보냄 조회만 하므로 멱등성o POST 신규 데이터를 등록하거나 프로세스 처리에 사용 등록할 데이터를 담은 body와 데이터 형식을 명시한 ContentType 필요 → Content-Type : application/x-www-form-urlencoded (폼 형식 데..

네트워크 2022.06.14

[Spring] Spring Security - 필터

Spring Security는 필터 기반으로 동작하며, 인증 및 인가를 필터 흐름에 따라 처리한다. (Spring에서 사용자의 요청은 Filter → DispatcherServlet → Interceptor → Controller 순으로 도착) 그렇다면 필터의 종류와 각각의 역할은 무엇일까 Spring Security의 FilterChain (필터의 종류와 흐름) 각 필터의 역할 SecurityContextPersistentFilter SecurityContextRepository에서 SecurityContext를 가져와서 SecurityContextHolder에 주입하는 역할 참고하면 좋을 글 : https://anjoliena.tistory.com/30 LogoutFilter logout 요청을 감시..

Spring 2022.06.14

[Spring] Spring Security - 주요 모듈

Spring Security Spring 기반 애플리케이션의 인증로그인, 인가 등을 담당하는 스프링 하위 프레임워크 필터 기반으로 동작 → 인증, 인가를 필터 흐름에 따라 처리 보안과 관련하여 다양한 옵션을 제공해주고 커스텀도 가능하기 때문에 개발자의 편의성을 높여줌 근데 처음 마주하는 순간에는 세상에서 제일 막막한 사람 될 수 있음 관련 용어 Resources (리소스) : 접근 주체가 접근하고자 요청하는 자원 (글 작성 페이지, 관리자 페이지 등) Principal(접근 주체) : 리소스에 접근하려는 사용자 Credential(비밀번호) : 리소스에 접근하는 대상의 비밀번호 Authentication(인증) : 접근 주체가 해당 어플리케이션을 사용할 수 있는 사용자인지를 확인 쉽게 말하면 로그인 했을..

Spring 2022.06.13

JVM, JRE, JDK

JVM 자바 가상 머신(JAVA Virtual Machine) 자바 프로그램을 컴파일해서 나온 바이트코드를 실행시킴 JRE 자바 런타임 환경(JAVA Runtime Environment) 자바 코드를 실행하기 위한 도구들로 구성된 패키지 JVM이 동작할 때 필요한 자바 라이브러리들이 담겨 있음 JDK 자바 개발 키트(JAVA Development Kit) 자바 기반 애플리케이션 개발에 필요한 소프트웨어 패키지 JAVA 프로그램 컴파일 및 디버그에 필요한 도구, 실행 파일, 바이너리 등을 포함하고 있어, 자바로 개발할 수 있는 여러 기능들을 제공함 JDK에서 제공하는 기능들 JRE, JVM, Javac(자바컴파일러. 자바 소스파일을 바이트코드로 변환), jar (자바라이브러리. 관련 있는 클래스 라이브러리..

JAVA 2022.06.09

파일과 텍스트 함께 전송하기2 - 지양해야 하는 이유

☞ 파일과 텍스트 함께 전송하기 ← 이 방법을 지양해야 하는 이유 파일 첨부가 가능한 게시글 등록 처리 시, 파일 등록 / 텍스트 등록 처리 컨트롤러를 분리하는 것이 좋다고 함. 파일을 포함한 게시글 등록 시, 클라이언트 쪽에서 요청을 2번 보내는 거. 텍스트 데이터는 '텍스트만' 처리하는 컨드롤러로 / 파일은 '파일만' 처리하는 컨트롤러로 근데 이미 파일 업로드 로직은 분리되어 있고, 서비스단에서 해당 메소드를 끌어와서 사용하는데 뭐가 문제인지 감이 안 와서.. 개발자 분들 계신 카톡방에 '컨트롤러'를 쪼개야 하는 이유를 여쭤봄 바이너리 파일과 json데이터를 별도로 처리해야 하는 이유 파일 업로드가 여러 기능에서 필요할 때, 필요 시마다 파일 업로드 메소드를 끌어와서 사용할 경우 해당 로직이 여기저기..

Spring 2022.06.09

파일과 텍스트 함께 전송하기1 - RequestPart

프로젝트 하던 중 게시글 작성 시 파일과 텍스트데이터를 함께 주고 받을 일이 생겼다. 기존에는 json데이터만 주고받으면 되어서 RequestBody를 사용했었는데, 후에 파일도 넣을 수 있도록 수정된 것. 파일이랑 json 데이터 함께 넘기려다보니까 RequestBody 말고 다른 방식을 찾아야 했음 (다만 기능 완성 후 ☞이런 방법은 지양해야 한다는 것을 알게 됨) RequestBody가 불가능한 이유 Content-Type이 보통 텍스트는 json / 파일은 multipart/form-data 포맷인데 하나의 요청에 json과 multipart/form-data를 각각 넣는 것은 불가 → 하나의 요청에는 하나의 Content-Type이 있어야 함 그리고 json 포맷에 multipart/form-d..

Spring 2022.06.09