본문 바로가기

CS 백엔드

(28)
[데이터베이스] RDB에 하지 말아야 할 것들 우연히 좋은 좋은 글을 발견해서 공유하고자 한다. 1. DB에 일 시키지 말자. DB랑 서버랑 요금을 비교해보면 서버가 훨씬 저렴할 것이다. 또한, 서버는 증설해도 DB 보다는 부담이 덜하다. 이 말은 즉, 서버가 연산을 해서 DB에 질의를 하는 것이 좋지, DB에 일 시켜서 버티지 못해 스펙을 높여야 하거나 클러스터링이나 샤딩 등으로 늘려야 하는 대가는 굉장히 비싸다. 2. RDB에 로그를 넣으면 안된다. 로그 전용 DB 라면 로그를 넣어도 된다. 하지만 로그는 계속해서 발생할 것이고, 유저가 몰리게 된다면 짧은 시간에 로그는 대량으로 발생할 것이다. 그렇게 발생한 대량의 로그 때문에 서버의 DB가 터질 수 있다. 아니 터진다. 3. 컬럼을 추가하기 전에 생각해야한다. 필요한게 생겨서 컬럼을 추가하는건..
[네트워크] Cache 1. Cache 캐시(cache)란 무엇일까? Cache는 프랑스어로 '숨기다'라는 뜻을 가지는 단어인 'cacher'에서 파생된 단어로, '물건을 일시적으로 저장, 보관하기 위해 사용하는 곳'이라는 의미로 많이 사용된다.. 컴퓨터에서는 기술적인 의미로 Cache를 많이 사용한다 '자주 필요한 데이터나 값의 복사본을 일시적으로 저장, 보관하기 위해 사용하는 곳'이라는 의미로 컴퓨터에서 cache를 사용하게 된다. 이를 사용하는 것을 캐싱(caching)이라고 한다. 아래의 그림은 컴퓨터의 간단한 동작 흐름이다. RAM(메인 메모리)는 하드 디스크로 부터 필요한 데이터를 불러오고, CPU는 RAM에 저장되어 있는 데이터를 가져와서 연산 작업을 수행하는 구조이다. 위 그래프는 CPU와 RAM 간의 성능 차이..
Forward Proxy, Reverse Proxy 1. Proxy Server Proxy란 "대리" 즉, 남의 일을 대신한다는 의미로 간략하게 설명할 수 있다. 그렇다면 Proxy Server란 무엇일까? "대신 처리하는 서버"로 간략하게 의미를 정의할 수 있다. 조금 더 저세히 설명하면 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버 (ex. 캐시, 보안, 트래픽 분산 등 여러 장점을 가질 수 있다) 2. Forward Proxy Forward Proxy는 일반적으로 말하는 Proxy를 뜻하며, 클라이언트와 인터넷 사이에 위치해서 클라이언트 대신 서버에 요청(Request)을 보내주는 역할을 한다. 클라이언트와 가까이 위치해있기 때문에 서버쪽에서 크게 관여하지 않는 위치이다. Forward Proxy 특징 캐싱 : Proxy 단에서 서버..
HTTP/0.9, 1.0, HTTP/1.1, HTTP/2, 그리고 QUIC 0. 들어가며 HTTP는 OSI 7계층에서 응용 계층에 속해있다. 그렇기 때문에 아래 단계인 전송 계층에 대해서 이해가 필요하다. 전송 계층은 클라이언트가 서버에 신뢰할 수 있는 데이터를 전송하기 위해 필요하다. 전송 계층 아래 단계 물리, 데이터링크, 네트워크 계층만으로 목적지에 데이터를 보낼 수 있디만, 중간에 데이터가 손사오디거나 유실되더라도 이들 계층에서는 아무것도 해주지 않는다. 즉, 데이터가 제대로 전달 되었는지의 역할은 전송 계층에서 해주는 것이다. 1. HTTP/0.9 : GET 메서드 HTTP의 초기 버전은 따로 없었다. 차후에 다른 버전과 구별을 하기 위해 버전 번호를 붙이기 시작할 때가 HTTP/0.9버전 부터이다. 0.9의 요청은 단일 라인으로 구성되며 리소스에 대한 경로로 가능한 ..
HTTP 0. 들어가며 네트워크에 대한 개념과 지식, 동작 원리에 대해서 부족하다는 것을 느끼고 처음부터 공부한다는 생각으로 글을 작성하려고 한다. 1. 프로토콜 프로토콜이란 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙이다. 간단히 예를 들면 '1'과 '2'라는 데이터를 보낼 때도 이진법(컴퓨터는 당연히 이진법)으로 16bit를 사용해서 데이터를 주고 받자라고 미리 약속을 합니다. 그러고 나서 약속한대로 0000 0000 0000 0001 / 0000 0000 0000 0010 를 보내면 이를 받는 쪽에서도 당연히 16bit로 왔다는걸 알고 '1'과 '2'라고 인식하는 것입니다. 2. HTTP (HTTP 프로토콜) HTTP는 Hypertext Transfer Protocol의 약자로..
도메인과 DNS - 이론 1. Domain (도메인) 이란? 도메인은 웹 브라우저를 통해 특정 사이트에 진입을 할 때, IP 주소를 대신하여 사용하는 주소이다. 정확히는 해당 도메인에 매핑되어있는 IP주소를 가져오는 것이라고 보면 된다. 도메인을 사용하면 복잡한 IP주소보다 한눈에 파악하기 쉽다 예를 들면 IP주소가 지번 또는 도로명 주소라면, 도메인 네임은 해당 주소에 위치한 상호 또는 건물명을 의미한다. 2. DNS (Domain Name System) 이란? 네트워크 상에 존재하는 모든 PC는 IP주소를 가지고 있다. 그러나 모든 IP가 도메인 네임을 가지고 있는 것은 아니다. 로컬 PC의 127.0.0.1 IP 주소는 localhost 라는 도메인 네임을 사용할 수 있지만, 그 외의 모든 도메인 네임은 일정 기간동안 대여..
백엔드 개발자의 로드맵 들어가기 앞서.. 비전공자이면서 개발 공부를 시작하고 프레임워크와 여러 기술 스택을 입문 정도는 사용할 수 있지만, CS 공부를 해본 적이 거의 없다. 현재 무엇을 공부해야하는지 또는 앞으로 있을 면접을 준비하기 위해서 CS 공부를 하기로 했다. 마침, roadmap.sh의 2021 버전의 백엔드 개발자 로드맵을 번역한 이미지가 있어서, 이것을 토대로 CS 공부를 해볼 것이다. (백엔드 로드맵의 추천 또는 대체 가능한 옵션은 본인이 작성한 것이 아님) 백엔드 로드맵의 목적 이 로드맵은 웹 개발에 대한 전체적인 방향과 함께 앞으로 무엇을 배워야 할지를 안내하며, 몇몇 도구가 그저 힙하거나 유행이라는 이유만으로 배우는 것은 피하고자 함에 목적이 있다. 어떤 도구가 다른 도구보다 어떤 경우에 더 적합한지 그 ..
[DB 이론] Index (with. Django) Index : MySQL과 Django의 기준으로 하였다. 1. Index Index 란..? RDBMS에서 검색 속도를 높이기 위해서 사용되는 기술이다. index는 table의 동작속도(조회)를 높여주는 자료구조이며, 데이터의 위치를 빠르게 찾아주는 역할이다. Table의 컬럼을 따로 파일로 저장해서 검색시 해당 Table의 레코드를 full scan하는 것이 아니라, 저장한 Index 파일을 검색해서 검색 속도를 향상시킨다. 단점.. 조회속도는 빨라지지만 UPDATE, INSERT, DELETE의 속도는 저하된다는 단점이 있다. 2. Index 생성 및 삭제 1) 인덱스 생성 # 단일 인덱스 CREATE INDEX 인덱스이름 ON 테이블이름(필드이름1) # 다중 컬럼 인덱스 CREATE INDEX ..