목록분류 전체보기 (32)
dev-sohee 님의 블로그

웹 어플리케이션 배포는 개발자에게 매우 중요한 단계입니다. 다양한 환경과 서버 구성 요소들, 배포의 자동화, 어플리케이션의 복잡성 등의 영향을 받아 어플리케이션 배포 과정은 복잡할 수 있지만 이를 쉽고 간편하게 처리할 수 있도록 도와주는 도구가 바로 War(Web Application Archive)입니다. 이 글에서는 WAR의 기본 개념과 구조에 대해 자세히 살펴보겠습니다.* WAR란?* WAR의 구조 # WAR란?War(Web Application Archive)는 웹 서버 또는 서블릿 컨테이너에서 실행될 수 있도록 어플리케이션의 모든 구성 요소를 하나의 파일로 묶어 제공하는 파일 형식입니다. WAR 파일은 웹 어플리케이션의 클래스 파일, JSP 파일, 서블릿, 정적 리소스(HTML, CSS, Jav..

이벤트 기반 아키텍처(Event-driven architecture), 라는 단어의 뜻이 유추가 되시나요?개발자에게 "이벤트(Event)"란, 시스템에서 발생하는 중요한 상태 변화나 동작을 의미합니다. 그렇다면 "아키텍처(Architecture)"는 무슨 뜻일까요? 아키텍처란, 구성 요소 간의 관계 및 시스템 외부 환경과의 관계를 설계화한 것, 쉽게 말해 서비스가 어떻게 구성되며 어떻게 동작이 되는지에 대한 설계도라고 생각하시면 되겠습니다.그렇다면 이벤트 기반 아키텍처(EDA)는 이벤트를 기반으로 한 아키텍처, 즉 시스템에서 발생하는 이벤트를 중심으로 시스템이 동작하고 처리되는 구조와 흐름에 대한 설계라고 볼 수 있겠습니다.이 글을 읽고 나면 누구나 EDA를 이해할 수 있도록 EDA에 대해 쉽게 설명해..

'웹 브라우저에서 Enter를 누른 후 일어나는 모든 일들 낱낱이 파헤치기'(https://dev-sohee.tistory.com/12)에서 예를 들어 우리가 웹 브라우저의 주소창에 'https://www.naver.com'을 입력하고 Enter 를 누르면 어떤 일들이 일어나는지에 대해 알아봤습니다. 그 중 클라이언트가 웹 서버에 HTTP 요청을 보내고 응답을 받는 동작이 반복적으로 이루어진다는 내용이 있었는데 이 글에서는 이때의 응답 객체 중 HTTP 상태 코드에 대해 알아보겠습니다. 서버에서의 처리 결과는 응답 메시지의 상태 라인에 있는 상태 코드(status code)를 보고 파악할 수 있습니다. 상태 코드는 세 자리 숫자로 되어 있는데 첫 번째 숫자는 HTTP 응답의 종류를 구분하는 데 사용하며..

1989년, 유럽 입자 물리 연구소(CERN)의 영국 물리학자 팀 버너스 리(Tim Berners Lee)가 연구원 간에 아이디어를 주고받을 때 항상 전자 우편이나 파일을 통해 주고받는 것이 비효율적이라고 생각하여 제안한 웹은 공통된 공간에 각자의 정보를 올리고 관리할 수 있는 일종의 정보 관리 시스템에서 시작되었습니다. 버너스 리는 최초의 웹 브라우저인 "WWW(World Wide Web)"을 개발했습니다. 이 브라우저는 웹 페이지를 볼 수 있는 것뿐만 아니라, 웹 페이지를 작성할 수 있는 편집 기능도 제공했습니다. 1991년, World Wide Web이 CERN 외부의 전 세계 사용자들에게 공개되면서 웹은 빠르게 확산되었고 1994년, 팀 버너스 리가 World Wide Web 컨소시엄(W3C)을..

I/O(Input/Output)은 파일을 쓰거나 불러올때 또는 서버에 보낼때 입출력을 통칭하는 용어입니다.그런데 JDK 1.4부터 NIO라는 것이 추가되었습니다.이 글에서는 NIO가 왜 추가된 것인지, I/O와 어떤 점이 다른지 알아보겠습니다. 먼저 I/O와 비교했을 때 NIO가 다른 점을 표로 살펴보겠습니다. # 입출력 방식스트림(Stream): 데이터가 들어온 순서대로 흘러다니는 단방향의 통로입구를 InputStream, 출구를 OutputStream이라 합니다. 스트림을 통해 데이터는 byte 형태로 흘러다닙니다.채널(Channel): 데이터가 흘러다니는 양방향의 통로채널은 양방향이기 때문에 스트림처럼 Input과 Output을 구별하여 따로 만들 필요가 없습니다. 기본적으로 버퍼를 통해서만 rea..

프로그램이 실제로 실행되어, 메모리나 CPU와 같은 자원을 할당 받으면 이를 프로세스라고 부릅니다. 스레드는 프로세스 내에서 실제로 작업을 수행하는 가장 작은 단위입니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하고, 동시에 두 개 이상의 스레드가 처리되는 것을 멀티 스레드라고 합니다. 프로세스 내부의 스레드는 같은 자원을 공유하여 사용하기 때문에 동시에 여러가지 일을 수행할 수 있고, 웹 서버에서 빠른 응답이 가능하다는 장점이 있지만, 여러 스레드가 하나의 자원을 공유하고 있기 때문에 동시성 문제가 발생할 수 있습니다. 예를 들어, 여러 스레드가 공유 자원에 동시에 접근하여 그 자원의 상태를 변경하려고 한다면, 자원의 상태가 예측할 수 없는 결과를 초래할 수 있습니다.이 글에서는 이렇게 문제가 될..

백엔드 개발자라면 웹 브라우저에서 검색창에 문자열을 입력 후 'Enter'키를 눌렀을 때 백엔드에서 발생하는 일련의 과정들을 모두 알고 있어야 한다고 생각합니다. 훗날 서버에 문제가 발생하거나 성능을 보완해야 하는 경우를 대비해야 하기 때문입니다. 먼저, 사용자가 구글 검색창에서 'Backend Developer'를 검색한다고 가정하겠습니다. 이때, 사용자가 검색 엔진에 입력하는 텍스트를 '쿼리'라고 합니다. 사용자가 브라우저 검색창에 쿼리를 입력하고 엔터를 누르면 브라우저는 ① URL을 구성합니다. 예를 들어, 'Backend Developer'를 검색한 경우에는 'https://www.searchengine.com/search?q= Backend Developer'와 같은 URL이 생성됩니다. ..

세상의 모든 프로그래밍 언어가 그렇듯 자바도 완벽하지는 않습니다. 그래서 자바는 개발자의 편의 및 성능 향사을 위해 지속적으로 업그레이드 되고 있습니다. 이 글에서는 자바의 다양한 버전 중 Java 8, Java11, Java17에 대해 알아보겠습니다.* Java 8* Java 11* Java 17 그 많은 버전 중에서 특별히 3가지를 선택한 이유는 바로 8, 11, 17이 LTS 버전이기 때문입니다.LTS(Long Term Support)는 오랜 기간 지원하는 특별한 버전의 에디션이며출시 이후 8년간 보안 업데이트와 버그 수정을 지원해주기 때문에 대부분 LTS 버전을 사용합니다. # Java 8오라클이 자바 인수 후 출시한 첫 번째 LTS 버전32bit를 지원하는 마지막 공식 Java 버전Oracle ..