목록깨알지식 - 개발 (15)
쿼카러버의 기술 블로그
웹서버 개발을 하다보면, 혼용되는 단어들이 꽤 있다. 로드 밸런서, 웹서버 등이 대표적인 예인데, 이번 글에서는 웹서버와 어플리케이션 서버를 하드웨어, 소프트웨어, 아키텍처 측면에서 간단하게 정리해보려고 한다. Web server(웹서버) 웹서버의 개념은 크게 두 가지 측면으로 요약할 수 있다. 소프트웨어 측면 : 웹서버는 HTTP와 같은 프로토콜을 통해 넘어온 클라이언트의 요청에 HTML과 같은 웹 페이지로 응답하는 소프트웨어다. 대표적인 예로 nginx, apache가 있다. 이 소프트웨어들은 호스팅하고 있는 서버(컴퓨터)에서 웹페이지의 컴포넌트 파일들(html, image, css, javacript 등)에 어떻게 접근하는지를 관리한다. 하드웨어 측면 : nginx나 apache와 같은 소프트웨어가..
개발을 하다보면 프로그래밍 언어마다 네이밍 컨벤션이 제각각이다. 내가 주로 사용하는 언어들만 비교하더라도 변수명에 대한 표기법이 다음과 같이 다르다. python : snake_case go : mixedCaps(lower/upper mixed camel case) nodejs : lower camel case 대표적으로 소개할 네 가지 표기법을 요약하자면 아래 그림만 보면되고, 상세한 설명을 보고 싶음 전체 글을 읽으면 되겠다. 이렇게 다양한 종류의 표기법들이 있는데, 각각이 무엇인지, 그리고 예시를 들어 설명하겠다. camelCase (lower camel case) 직관적인 예시 : phoneNumber, createdAt, updatedAt 단어를 표기할 때 첫 문자는 소문자로 시작하고, 띄어쓰기..
컴파일러 컴파일러는 번역가 역할을 하는 하나의 소프트웨어 프로그램이다. 컴파일러는 프로그래머가 작성한 코드를 기계가 이해할 수 있는 기계어로 바꾸어 준다. 예를 들어 컴파일러는 high-level언어인(사람이 더 이해하기 쉬운) 파이썬과 같은 코드를 low-level언어(기계가 더 이해하기 쉬운)언어로 바꾼 object code를 만들어낸다. Cache(캐슁) Cache란 하드웨어적이든 소프트웨어적이든 상관없이 '잠정적으로(temporarily)`데이터를 저장하는 저장소이다. 일반적으로 비싼 메모리라 하는데, 그 이유는 사용할 수 있는 용량 대비 가격이 실제로 비싸기 때문 (하드웨어로 얘기하자면 현재기준 램 16GB=10만원 HDD 1TB = 5만원) 하드웨어적으로 예를 들자면 CPU에서 빠른 연..
favicon.ico란? facvicon : 파비콘은 웹페이지에 접속했을때, 상단 탭에 보여지는 아이콘을 일컫는다. 이 아이콘은 즐겨찾기에 웹페이지를 등록할때도 사용된다. 쉽게 말해서 다음 등의 사이트로 들어가 주소창을 보면 조그만한 아이콘이 보이는데, 그걸 파비콘이라고 함. 파비콘이 적용된 사이트와 적용안된 사이트는 브라우저의 고유 아이콘이 표시되게 된다. 일반적으로 ico(아이콘 파일 확장자)로 파비콘을 제작하면, 브라우저에 적용된다.
운영체제나, 멀티 스레딩 등 개발에 대하 공부를 하다보면 Physical CPU와 Logical CPU에 대한 개념이 헷갈릴 때가 많다. 최대한 예제들을 첨부해서 설명할 예정이다. Term 정의 CPU는 꽤나 모호하게 쓰이는 단어 중 하나다. Processor, Core, hardware thread 등 글들을 읽다보면 다양한 term을 통칭하듯이 쓰이는 경우가 많다. 하지만 일반적으로 Core가 CPU라는 단어에 가장 일치하는 개념이라고 할 수 있다. 단어 정의를 찾아봐도, 멀티스레딩이나 고루틴 등의 개념을 이해할 때, CPU의 구조와 주요 term에 대한 이해가 필요할 때가 많다. 따라서 본 글에서는 해당 용어들을 디테일하게 정리해보겠다. Processor : 소켓에 장착되는 물리적인 chip을 읨한..
폴링은 리얼타임 웹을 위한 기법으로, 일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식을 말한다. 이렇게 서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간을 위해 필수적인 persistent connection이 불가능하기 때문이다. 클라이언트가 서버에 특정 요청을 하면 서버가 응답해준 후 연결이 끊어지는게 HTTP의 특징이기 때문이다. 따라서 실시간 서비스라고 불리는 서비스들 대부분이 실시간이 아니다. 실시간으로 변하는 야구 중계 같은 경우, 브라우저에서 5초 단위로 서버에 요청을 보내 업데이트 하는 방식으로 구현된다. 폴링을 위키피디아식으로 다시 정의해보면 폴링이란 하나의 장치(혹은 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치 (또는 프로그램)의 상태를 ..
프로비저닝(Provisioning) 이란 의미는 영어 직역한 그대로 "제공하는것" 이다. 어떤 종류의 서비스든 사용자의 요구에 맞게 시스템 자체를 제공 하는 것을 프로비저닝이라고한다. 프로비저닝에는 서버 프로비저닝, 네트워크 프로비저닝, 사용자 프로비저닝, 서비스 프로비저닝 등 다양한 유형이 있다. 서버 프로비저닝 서버 프로비저닝은 필요한 리소스를 기반으로 네트워크에서 사용될 서버를 설정하는 프로세스다.새로운 시스템을 생성한 후 가동 상태로 만드는 데 필요한 모든 작업은 물론, 해당 시스템에 대해 원하는 상태를 정의하는 작업도 포함된다. 네트워크 프로비저닝 네트워크 프로비저닝에는 특히 사용자, 서버, 컨테이너, IoT 기기가 액세스할 네트워크를 설정하는 작업이 포함될 수 있다. 사용자 프로비저닝 사용자 ..
API 관련 업무를 하게 되면, 스웨거를 자주 접하게 된다. 스웨거란 Open Api Specification(OAS)를 위한 프레임워크다. OpenAPI에서 빼놓을 수 없는 기능이 바로 swagger다. API 에디터 혹은 코드젠 혹은 API 매뉴얼 자동생성 및 테스트 사이트 생성으로 유명한 Swagger! 스웨거 설명 전에 먼저 OAS가 무엇인지 한번 살펴보자. 간단하게 말하면 아래와 같다. OpenAPI = Specification Swagger = Tools for implementing the specification OAS(OpenAPI Specification)는 RESTful 웹서비스를 약속된 규칙에 따라 약속된 규칙에 맞게 API 스펙을 json과 yaml 형식으로 표현한다. 이를 통해,..