분류 전체보기 155

[javascript] Node.js와 express 비교

자바스크립트는 Html 태그를 동적으로 추가하고 웹의 동적인 동작을 처리할 때 사용된다.뿐만 아니라 클라이언트에 동적인 기능을 제공함과 동시에 단일 언어로 클라이언트와 서버를 모두 개발할 수 있는 가능성이 있다. 자바스크립트를 통해 서버를 개발하고 구동할 수 있는 방법엔 두 가지가 있다.바로 Node.js와 express다. 오늘은 이 두가지를 통해 서버를 구동하고그 문법에는 어떤 차이가 있으며 각 특징은 어떤지 포스팅하고자 한다.  Node.js 특징   1. 비동기 I/ONode.js는 비동기식 입출력을 기본으로 하여 높은 성능을 발휘한다. 이는 많은 요청을 동시에 처리할 수 있게 한다.ex:) 채팅 애플리케이션많은 사용자가 동시에 메시지를 주고받는 실시간 애플리케이션에 비동기 I/O를 사용하면 각 ..

[javascript] 콜 스택과 이벤트 루프 | 동기/비동기 처리 차이?

동기 처리란, 쉽게 말해 순차적인 처리를 의미한다.만약 응답과 요청이 동기라면, 어떤 일이 발생할까?A 클라이언트가 요청을 보냈다고 하자. Aa서버는 요청을 받고 응답을 한다.문제 없다. 케이스를 바꿔보자.A 클라이언트와 B 클라이언트가 요청을 보냈다고 하자. Aa 서버는 요청을 각각 받고 각각 응답을 한다.여기까진 괜찮을 지도 모른다.   그런데 보통, 클라이언트:서버는 다:1 관계다.서버는 다중 처리를 해야 하는 경우가 대부분이다.이렇게 요청을 받을 때는 참고로 콜 스택을 사용하기 때문에 계속 요청이 쌓이게 되는 것이다.이렇게 되면 나중으로 갈수록 대기 시간이 천문학적으로 길어지게 되고이러한 불편함은 클라이언트가 감수해야 된다. 성능은 크게 떨어지고 서버의 부하도 심해질 것이다. ⇒ 고로 서버를 동기..

[Web] 웹 서버와 WAS 차이점에 대해 아시나요? Apache vs Tomcat

■ 웹 애플리케이션 동작 원리를 살펴보자 웹 애플리케이션 = 우리가 인터넷을 통해 사용하는 모든 서비스로,  사용자의 브라우저와 서버 간의 상호작용을 통해 동작한다.사용자가 요청을 보내고, 서버가 이를 처리하여 응답을 보내는 과정을 반복함으로써 우리가 웹을 통해 다양한 서비스를 이용할 수 있는 것이다. 이 때 브라우저와 서버 간 상호작용은 HTTP 프로토콜을 기반으로 한다.클라이언트와 서버가 HTTP 프로토콜을 기반으로 통신하는 것이다.   HTTP 프로토콜 HTTP 프로토콜은 1)무연결성과 2)무상태성을 포함하여 각 요청과 응답이 독립적으로 처리되는 특징을 가지고 있다. 이를 통해 클라이언트와 서버 간의 효율적인 통신이 가능하며, 요청과 응답에는 각각의 정보가 포함되어 있어 서로의 상태를 이해하고 처리..

Web 2024.05.13

[Web] 웹 브라우저 내부 구조 한 눈에 보기!👓 / 브라우저 엔진, 렌더링 엔진? / 돔 트리

웹 브라우저 (Web Browser) 의 내부 구조를 이해하는 것은마치 자동차를 잘 운전하기 위해 엔진과 페달의 역할을 알아야 하는 것과 비슷하다.🚗 웹 브라우저도 내부를 알아야 각 동작에 발생하는 일을예측하고, 해석할 수 있게 된다. 즉 잘 다룰 수 있게 되는 것이다.  오늘은 웹 브라우저의 내부구조와주요한 엔진이 어떤 역할을 하고, 어떤 과정을 거쳐우리에게 요청한 페이지를 보여주는지 간단하게 살펴보도록 하자.    1. 구성 요소웹 브라우저의 내부 구조는 여러 주요 구성 요소로 이루어져 있다.사용자 인터페이스(UI)사용자가 상호작용하는 부분으로, 주소 표시줄, 이전/다음 버튼 등이 포함된다.브라우저 엔진사용자 인터페이스와 렌더링 엔진 사이의 상호작용을 담당한다.렌더링 엔진HTML과 CSS를 파싱하여..

Web 2024.05.12

[Network] 네트워크 통신을 위한 포트의 역할과 필요성

네트워크에서 통신하는 모든 개체들을 통틀어 '노드' 라고 표현한다. (클라이언트, 서버를 아우르는 개념)쉽게 말해 '통신에 참여하는 모든 단말'을 뜻한다.    예를 들어보자.네트워크 A에 컴퓨터 20대와 허브 2개 공유기 2개, 그리고 라우터가 있다면,네트워크 A에 속한 장비들은 하나의 노드로 친다. 여기서 주의!!★ 헷갈리지 말아야 할 것이,기기나 단말 하나를 독립적인 노드로 여기는 것이 아니라, 통신의 말단, 종단점을 노드로 여기기 때문에하나의 노드 안에 다양한 장비들이 포함 될 수도 있다는 것이다. 그리고... 이 노드를 서로 연결하는 것이 '링크' 이다.  아무튼 네트워크 통신은 이와 같이 노드와 링크의 구조로 이루어진다. 오늘은 프로토콜과 포트에 대해 이야기하고자 한다.이 노드와 링크로 이루어..

Server 2024.05.12

[Windows10] C드라이브 파티션 확장하기 (D:/ -> C:/)

메모리가 부족한 건 어쩔 수가 없는 듯 하다. D드라이브도 용량이 아주 넉넉한 건 아니지만 조금 파티션을 떼어줘보기로 했다... 윈도우 -> '파티션' 검색 D드라이브 우클릭-볼륨 축소 10G만 떼어주겠습니다.... 참고로 1024MB = 1G 할당되지 않은 빈 파티션 . . . 근데 볼륨 확장이 안된다. 찾아보니 별도의 프로그램이 필요하다고 하여 시도해봤으나 디스크가 달라 방법이 없는 상황. 그래서 그냥 돌고 돌아 간단한 방법을 쓰기로 했다.. -C드라이브 디스크 정리 추가로 용량 큰 폴더 옮겨주기 CentOS8 서버... D드라이브로 옮겨주었다... 끝... 이제 Intellij나 크롬 잔뜩 실행해도 67% 밖에 메모리 안먹는다.. 끝...진짜 끝.. 요약 : D->C드라이브 디스크끼리 파티션 이동,..

생활리뷰 2024.03.27

[Docker] Springboot 도커 배포해보기 | 도커 이미지 장점 (Docker hub,Docker API)

도커 이미지란? WHAT is the Docker Image? 도커 이미지는 파일 시스템의 변경사항만을 포함하는 여러 개의 읽기 전용 레이어로 구성됨. 이미지를 업데이트할 때 전체 이미지를 다시 다운로드할 필요 없이 변경된 부분만 업데이트할 수 있다! 이미지 빌드 과정에서 이미 빌드된 레이어는 로컬에 캐시되어 다음 빌드 시 재사용되며, 중복 다운로드 방지 & 조금씩 변경하면서 빌드를 반복할 때 특히 유용하다. 도커 서비스의 가장 작은 단위라고 생각하면 될 듯하다. 오늘은 도커의 개념과 장점은 간단하게 훑고 실제 스프링부트 프로젝트 배포를 실습해보자. 도커가 리눅스 혹은 각자 환경에 설치된 것을 기본 베이스로 한다. 도커에 권한부터 추가해야 한다. (권한 추가이므로 관리자 모드 sudo) usermod -..

DevOps/Docker 2024.03.17

[Spring] 스프링 빌드 오류 모음 || sudo: ./gradlew: command not found 에러가 뜰 때

스프링 프로젝트 개발을 마치고 빌드를 실행하기 위해 ./gradlew build 를 수행해야 하는데, (관리자 권한으로 수행) 분명 작업 폴더에 접근했고 목록에 gradlew 가 있는 것을 봤는데도 수행이 안될 때가 있다. [CASE1] 우선 프로젝트 파일을 원격지에서 받아왔을 경우, 자바나 gradle 환경이 달라서 오류가 날 수는 있다. => gradle -v (gradle 버전 확인) , java --version (자바 버전 확인) 버전이 다르면 그에 맞게 업그레이드/다운그레이드를 해줘야 함 [CASE2] 무한 빌드 상태에 빠질 경우 (무한 빌드의 경우, 돌리고자 하는 서버의 메모리를 확인할 것. 본인은 클라우드를 사용하여 프리 티어로 받은 메모리가 1G밖에 되지 않아서 그런 것이었고 증설하니 문..

Backend-dev/Spring 2024.02.21

[Linux] 윈도우 서버와 우분투 파일 동기화 쉽게 하기(LSync,rsync 사용법)

scp를 이용해서 디렉토리를 주고 받는 방법이 가장 익숙하지만 변동이 많은 프로젝트를 이렇게 주고 받는 건 비효율적이라는 생각이 들어서 실시간 연동이 가능한 동기화 방법을 찾아봤다. 그래서 찾아보니 LSync를 많이 이용하는 것을 알게 되었다. ▶[리눅스] 우분투 서버에서 LSync 설정 1. LSync 설치: sudo apt-get update sudo apt-get install lsyncd 2. LSync 설정 파일 생성: LSync는 설정 파일을 통해 동작한다. /etc/lsyncd/lsyncd.conf.lua lsync 를 함께 설치해준다. 2. LSync 설정: RSync 클라이언트를 사용하여 윈도우 서버에서 원격 동기화를 수행하는 스크립트를 작성한다. Cygwin shell: C:\Delta..

Server/Linux 2024.02.18