지식&개념(17)
-
JWT Token & Session
Session 이란? 유저의 정보를 데이터베이스에 저장하고 상태를 유지하는도구 특징 session은 특수한 id 값으로 구성되어 있고, session 은 서버에서 생성되고 클라이언트에서 쿠키를 통해 저장이 된다. 클라이언트에서 요청을 보낼 때 session id 를 같이 보내면 현재 요청을 보내는 사용자가 누구인지 서버에서 알 수가 있다. 즉 session id 의 정보가 서버에 특정 데이터베이스의 정보와 연결되어 있다는 것이다. 때문에 요청을 할 때마다 매번 아이디와 비밀번호를 물어 볼 필요가 없는 장점을 가지고 있다. (이부분은 JWT 도 마찬가지) 서버에서 데이터가 저장되기 때문에 클라이언트에 사용자 정보가 노출될 위험이 없다. 데이터베이스에 session 을 저장해야 하기 때문에 Horizonta..
2023.12.19 -
SQL 기본
데이터는 왜 초기화 되는가? 코드를 저장하면 코드는 컴퓨터를 아무리 껏다가 켜도 그대로 남아있다. 이것이 SSD 의 역할 SSD 같은 경우는 우리가 데이터를 저장하게 되면 그 데이터가 고장나지 않는 이상 영구적으로 저장된다. 만약 코드를 실행하게 되면 SSD 에 저장되어 있던 코드가 램으로 올라가게 된다. SSD에 있던 코드가 그대로 램에 올라오는 것 즉 실행되고 있는 것만 램에 올라온다. 그래서 램에 위치해 있는 이 데이터가 실행이 되어서 서버를 실행하게 된다. 그런데 램에 올라간 데이터는 프로그램이 재시작되면 리셋된다. 이는 하드웨어적인 문제이다. 램은 데이터를 영구적으로 들고 있지 못한다. 그렇기 때문에 실행 도중에 생성된 변수들이나 변경된 값들은 유지될 수가 없다. 왜 램을 사용할까? 램이 속도가..
2023.12.13 -
샤딩이란?
샤딩의 목적 DB 샤딩은 데이터가 급격히 증가하게 되거나 트래픽이 특정 DB로 몰리는 상황을 대비해 빠르고 유연하고 안전하게 DB 를 증설 할 수 있게 한다. 전테 데이터베이스에 모든 데이터를 한 테이블 혹은 데이터베이스에서 관리하기 어려워 진다. 데이터베이스 볼륨이 커지면 커질수록 데이터베이스 읽기/쓰기 성능은 감소할 것이고, 데이터베이스가 병목 지점이 될 것이다. 따라서 이를 적절히 분할할 필요가 있다. 데이터베이스를 분할하는 방법은 크게 샤딩과 파티셔닝이 있다. 이 두가지 기술은 거대한 데이터셋을 서브셋으로 분리하여 관리하는 방법이다. 샤딩이란? 샤딩(Sharding)은 DB 트래픽을 분산할 수 있는 중요한 수단이다. 특정 DB의 장애가 전면 장애로 이어지지 않게 하는 역할도 한다. 샤딩은 동일한 ..
2023.12.09 -
객체 지향 설계 SOLID 원칙
SOLID 설계 원칙은 oop 의 4가지 특징(추상화, 상속, 다형성, 캡슐화)와 더불어, 객체 지향 프로그래밍의 면접 질문 중 하나이고, 디자인 패턴들이 SOLID 설계 원칙에 입각해 만들어 진 것이기에 표준화 작업에서부터 아키텍처 설계에 이르기까지 다양하게 적용되는 이의 근간에 되는 SOLID 원칙에 대해 알아볼 필요가 있다. 좋은 소프트웨어는 변화에 대응을 잘 하는 것을 말한다. 갑자기 고객사에 기획에 없는 추가적인 요청을 하면 비록 욕을 할지라도 결국 구현을 해야하는데, 이러한 변화에 큰 문제없이 잘 대응하기 위해서 소프트웨어 설계 근간이 좋아야 한다. 좋은 설계란 시스템에 새로운 요구사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 말한다. 시스템에 예상치 못한 변경사항이 발생하더라..
2023.12.05 -
[클라우드 용어] 가상화
가상화란? 클라우드 서비스에서도 사용자는 서버를 임대해 사용한다. 사용자가 사용하고 싶은 사양으로 서버를 선택하면 가상화 기술을 이용해 해당 사양의 서버를 가상으로 생성해 사용한다. 가상 서버는 하나 또는 클러스터링 된 물리 서버 내에 만들어진다. 가상 서버는 물리 서버의 CPU 나 메모리 같은 컴퓨터 자원을 일부 독점해 물리적으로 독립된 서버와 같이 동작한다. 서버만 가상화 기술을 사용할 수 있는 것이 아니다. 스토리지나 네트워크 장비 등도 1대의 기기를 가상화 기술로 여러 기기처럼 취급할 수 있다. 기본적으로 가상화 기술을 통해 생성된 기기를 '가상 OO' 라고 한다.
2023.10.18 -
[클라우드 용어] 클라우드(Cloud)
클라우드란? 클라우드는 클라우드 서비스 제공자가 서버 등의 기기를 준비하고 거기에 구축된 가상 서버나 응용 프로그램 등을 사용자에게 제공하여 이용료를 받는 형태이다. 물리적인 기기나 네트워크는 서비스 제공자가 준비해 놨으므로 사용자는 바로 정보 시스템을 구축할 수 있다. 클라우드의 정식 명칭은 클라우드 컴퓨팅(Cloud Computing)이다. 클라우드 어원은 단어 뜻 그대로 구름이다. 보이지 않는 컴퓨팅 자원을 활용한다는 것에서 유래했다. 이 말을 조금 더 풀어 써보면 '사용자에게는 보이지 않지만 중앙의 서버 컴퓨팅 자원을 활용해 서비스를 받을 수 있게 하는 플랫폼'이다. 서비스 제공자는 서버나 응용 프로그램을 제공할 뿐만 아니라 내부의 모든 하드웨어를 관리하므로 사용자는 하드웨어 장애에 대해 신경쓰지..
2023.10.17