분류 전체보기
Java Thead
프로세스와 스레드 프로세스란 운영체제에서 실행 중인 하나의 애플리케이션을 의미한다. 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 독립적인 메모리를 할당받아 애플리케이션의 코드를 실행한다. 스레드는 하나의 실행 흐름으로 프로세스 내의 여러 스레드를 가질 수 있다. 멀티 프로세스 vs 멀티 스레드 멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면, 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라고 할 수 있다. 멀티 프로세스들은 운영체제에서 할당받은 자신의 독립적인 메모리를 가지고 있어서, 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다. 반면에 멀티 스레드는 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 해당 프로세스 자체가 종료..
로컬에서 임베디드 S3 사용하기
파일 업로드와 S3 파일 업로드 기능을 구현할 때, 주로 확장성이 좋은 AWS에서 제공하는 S3 서비스를 이용해서 많이 구현할 것입니다. Spring Cloud AWS S3 연동 및 파일 업로드 스프링에서 프로필 사진 업로드 등 파일을 업로드하는 경우 Spring Cloud를 통해 쉽게 개발하실 수 있습니다. 참고로 지난번 AWS S3에 파일 업로드 하는 방법에 비해 좀 더 개선된 방법으로 글 올려보 willseungh0.tistory.com 문제 사항 로컬 혹은 테스트 환경에서 AWS S3을 사용해서 파일 업로드 기능을 테스트가 필요한 상황이 있습니다. 이때마다 실제 S3 버킷에 파일을 업로드하는 것은 비효율적이다. 이를 개선하기 위해서 테스트 환경에서는 런타임 시점에 Stub 객체를 주입하는 방식으로..
함수형 프로그래밍이란?
프로그래밍 패러다임 명령형 프로그래밍은 무엇을 어떻게 할 것인가에 가깝고, 선언형 프로그래밍은 무엇을 할 것인가와 가깝다. 명령형 프로그래밍 절차지향 프로그래밍: 수행되어야 하는 순차적인 처리과정을 포함하는 방식. 객체지향 프로그래밍: 객체들의 집합과 상호작용으로 애플리케이션을 구성. 선언형 프로그래밍 함수형 프로그래밍: 순수 함수를 조합하고 소프트웨어를 만드는 방식 명령형 프로그래밍에서는 상태를 바꾸는 것을 강조하는 것과는 달리, 함수형 프로그래밍은 함수의 응용을 강조한다. (위키피디아) 함수형 프로그래밍의 개념 일급 시민인 함수 (first-class) 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반..
Nginx 동작 방식부터 프록시, 로드밸런서까지
nginx란? Apache와 같은 웹 서버로 클라이언트로부터의 요청에 맞는 정적 파일을 응답해주는 WebServer로 사용되기도 하고, 동적인 리소스를 처리하기 위해 WAS로 요청을 전달해주기도 한다. 이러한 역할들을 나열해보면 정적 파일을 처리한다. WAS 서버에 요청을 보내주는 프록시 기능 수행. 다수의 WAS 서버로 요청을 분배하는 로드밸런서의 역할을 수행. SSL 혹은 프록시를 통해서 보안 강화. 캐싱 처리. 등의 역할을 수행한다고 할 수 있다. Apache vs Nginx 웹 서버 중 Apache, Nginx가 가장 유명하다고 할 수 있는데, 어떠한 차이가 있는지 봐볼까요? Apache 아파치 서버는 클라이언트로부터의 요청마다 프로세스, 스레드가 처리하는 구조. Prework, Worker 두 ..
[대규모 서비스를 지탱하는 기술] 현대 웹 서비스 구축에 필요한 실전 기술
작업 큐 시스템 웹 서비스와 요청 웹 서비스에서는 기본적으로 요청이 동기적으로 실행된다. 즉 요청에 기인하는 모든 처리가 끝난 다음에 응답이 반환된다. 따라서 계속 성장해가는 웹 서비스에서는 데이터가 서서히 축적되면서 데이터를 추가하고 갱신하는 처리가 점점 무거워진다. 양호했던 성능도 시간이 지남에 따라 악화되고 서비스 사용자 경험에 영향을 주는 경우가 발생한다. 이런 경우에 작업 큐 시스템을 사용함으로써 나중으로 미뤄도 되는 처리를 비동기로 실행할 수 있고 사용자 경험도 개선할 수 있다. 작업 큐 시스템 입문 어느 정도 양이 있는 비동기 처리를 안정적으로 수행하려면 작업 큐와 워커를 세트로 한 작업 큐 시스템을 사용하는 것이 일반적이다. 작업큐 시스템에서는 작업 큐에 실행하고자 하는 처리를 등록하고, ..