목록분류 전체보기 (74)
과거의 내가 미래의 나에게
저번 시간에 웹 서버가 무엇인지 살펴보았다. 오늘은 다양한 웹 서버 소프트웨어 군에서 Nginx에 대해서 학습해보려한다. Nginx는 웹 서버 소프트웨어로 가벼움과 높은 성능이 그 특징이다. 다른 웹 서버 제품군인 Apache에 비해 동작이 단순하기에 동시접속 처리에 특화되어있다. 따라서 동시접속자가 많은 서비스군이라면 Nginx 환경이 권장된다. 1. 정적 콘텐츠 제공Nginx의 가장 핵심 기능으로 웹 페이지를 클라이언트에게 제공해준다. 클라이언트가 브라우저 주소창에 URL을 입력한 후 전송하면 웹 서버는 그 HTTP 요청을 읽어 사용자가 원하는 HTML 문서 등 정적 콘텐츠를 전달해준다. 단순히 저장된 웹 리소스들을 클라이언트로 전달하고, 클라이언트로부터 콘텐츠를 전달받아 저장하거나 처리한다. 2..
웹은 기본적으로 클라이언트-서버 구조이다. 서버에는 웹에 표출할 수 있는 모든 데이터들을 가지고 있고, 클라이언트는 사용자가 요청 시 서버에서 데이터를 가져와 화면에 그리는 것이 바로 웹인 것이다.여기서의 서버가 바로 웹 서버라고 할 수 있는데, 막상 웹 서버가 무엇이냐 물어보면 또렷히 대답할 수가 없었던 것이다. 오늘은 웹 서버가 무엇인지 설명할 수 있도록 웹 서버에 대해 학습하고 정리해보겠다. 웹 서버는 무엇인가 MDN 문서를 바탕으로 웹 서버란 무엇인지 살펴보면 다음과 같다. 웹 서버는 하드웨어 측면과 소프트웨어 측면으로 볼 수 있다.하드웨어 측면의 웹 서버는 말그대로 물리적인 서버를 의미하고 이는 웹 사이트를 띄우는데 필요한 데이터들을 저장하고 처리하는 서버이다. 소프트웨어 측면의 웹 서버는 ..
이번 주부터 한달 간 도커 수업을 듣게되었다. 첫 날은 vagrant를 활용한 가상머신 실행과 도커의 기본 개념 그리고 도커의 명령어에 익숙해지는 것 위주로 수업이 진행되었다. 가상머신은 현재 내가 활용이 잦지 않으므로 시간내어 정리하고 학습할 필요성을 아직 느끼지 못했고 도커의 기본 개념은 일전에 CI/CD를 공부할 때 어느정도 학습했었기에 오늘 정리할 글은 수업 마지막 교시에 진행했던 볼륨을 잡는다는 것에 대해 정리하고 기록해보려한다. 볼륨(Volume)이란 볼륨의 사전적 정의로는, "컴퓨터 데이터 스토리지에서 볼륨 또는 논리 드라이브는 단일 파일 시스템을 갖춘 단일 접근 가능한 저장 영역을 의미"라 한다. 이를 풀어 설명하면 결국 볼륨은 논리적인 단위로 나눈 데이터 저장소라 할 수 있다.흔히..
원래는 오늘부터 웹서버에 대해 글을 쓰려했는데, 웹서버로 대표되는 nginx를 보다가 직접 해봐야겠다 싶었다. 이를 설치하기 위해 먼저 리눅스 환경이 필요하다 여겨 윈도우 환경에서 WSL을 설치하게 되었다. 따라서 오늘은 윈도우에서 리눅스 환경을 돌릴 수 있는 WSL을 설치한 과정을 적어놓으려 한다. WSL은 무엇일까?WSL은 Windows Sub-system for Linux의 줄임말로, 해석하면 리눅스를 위한 윈도우의 서브시스템이다.Hyper-V 기반의 경량화된 가상화 기술을 사용하여 실제 리눅스 커널을 탑재해 Windows 운영체제에서 Linux 운영체제를 구동할 수 있도록 해주는 기술이다.WSL이 나오기 이전에는 vmware와 같은 가상머신을 사용하거나 듀얼 부팅을 사용하는 등 윈도우 내에서 ..
통신을 통한 데이터는 아무리 협의를 봤다해도 어떻게 변해서 들어올 지 단언할 수가 없다. 따라서 프론트 코드를 짤 때 가장 중요하게 생각하는 것 중 하나가 통신을 통해 들어온 데이터가 이상하더라도 구동하는 데 에러가 나지 않도록 처리하는 에러 처리이다. 옵셔널 체이닝은 에러 처리하는 데 유용한 기능으로, 객체에 접근하는 에러 처리를 간단히 할 수 있게 돕는다. 아주 옛날 프로젝트의 코드를 유지보수해야할 일이 생겼는데, 코드의 바벨이 ES11이 지원이 안되었다. 그러다보니 옵셔널 체이닝도 사용할 수 없었고 에러처리하는데 코드가 잔뜩 길어지다보니 새삼스레 이 기능에 대해 다시 돌이켜보게 되며 오늘의 글을 작성본다. 옵셔널 체이닝 기본옵셔널 체이닝은 객체, 함수, 배열 요소 등에 안전하게 접근할 수 있게 해..
드디어 상태코드의 마지막인 500번대를 살펴보고 HTTP를 마무리하겠다! 5xx (Server Error): 서버의 오류로 인해 요청을 처리할 수 없거나 하지 않음500번대 상태 코드는 서버 내부의 오류로 인해 클라이언트의 요청을 처리하지 못하고 반환하는 코드이다. ■ 500 (Internal Server Error): 요청을 처리하는 과정에서 서버가 예상하지 못한 상황에 놓였다는 상태 코드이다.이는 특별한 뜻이 담겨있다기 보단 서버 에러를 총칭하는 일반적인 응답으로 500번대 상태코드 중 적절한 것이 없다면 사용된다. 서버에서 나는 모든 에러를 다 지정할 수는 없기에 정확히 어떤 문제인지는 규정이 안되었지만 어찌되었든 서버에서 에러가 발생했다는 것을 알리는 것이다. ■ 501 (Not Implem..
오늘은 400번대 상태코드에 대해서 쭉 살펴보았다. 4xx (Client Error): 서버가 클라이언트의 오류로 인해 요청을 처리할 수 없거나 하지 않음400번대 상태 코드는 클라이언트의 오류로 인해 클라이언트의 요청을 처리하지 않고 반환하는 코드이다. 클라이언트가 이와 관련된 상태코드를 받았다면 동일한 요청을 동일한 형태로 다시 보내서는 안될 것이다. ■ 400 (Bad Request): 클라이언트가 잘못된 요청을 하여 요청을 처리할 수 없음을 의미한다.요청 파라미터가 알맞지 않거나 메시지에 오류가 있는 등 클라이언트의 요청 내용이 문제가 있을 시 반환되는 값이다. 이 때 백엔드 쪽에서 어느 부분이 잘못된 지 명시해준다면 클라이언트는 훨씬 더 빠르게 수정할 수 있어서 완전 좋다. 사족으로 아예 상..
Unreachable code 에러문구는 도달할 수 없는 코드로, 소스 중에 어떠한 방법으로도 도달되지 않는 구문이 있다면 생성되는 에러다. try { // 아무런 코드도 없음 return {};} catch (error) { console.error(error); return undefined;} 예를 들어 try 부분에서 에러가 나면 catch로 보내질텐데 위의 구문의 경우 애초에 try에는 catch로 보내질 껀덕지가 없다. 그렇기 때문에 Unreachable code 에러가 나타나게 된다. function test(a){ if(a === 1){ return '1번' }else{ return '그 외' } console.log(a)} 위의 코드도 똑같다. 함수 test를 실..