본문 바로가기

Knowledge/CS46

[CS] RDBMS 와 NoSQL 의 차이 프로젝트 때 RDBMS 의 종류인 MySQL을 사용해서 진행했는데, NoSQL은 사용해보지 않아 RDMS 와 NoSQL 의 차이를 알아보려고 합니다. 먼저 데이터베이스란 무엇일까요? 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리하는 데이터의 집합입니다. 특징으로는 실시간접근 , 지속적인 변화, 동시 공유가 있습니다. RDBMS 는 관계형 데이터 베이스 입니다. 정해진 스키마에 대에 따라 데이터를 저장합니다. 따라서, 데이터 구조가 명확할 때 사용하는 것이 좋습니다. 장점으로는 정합성을 보장할 수 있고, 데이터의 중복이 없기 때문에 수정이 쉽습니다. 단점으로는 연관된 테이블은 join 을 이용해서 관계를 맺는데, 시스템이 커지면 성능저하의 가능성이 있습니다. 또한, 성능을 향상시키기 위해서는 s.. 2023. 2. 9.
[CS] 트랜잭션(Transaction) 이란? 트랜잭션의 정의 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위, 한꺼번에 수행되어야 할 일련의 연산입니다. 정의를 이해해보면, DB 의 데이터에 접근해 변경을 시도하는 작업(기능) 이라고 이해할 수 있습니다. 먼저 트랜잭션의 예시로 A의 계좌에서 B 의 계좌에 입금하는 작업을 들어보겠습니다. 1. A 의 계좌를 확인합니다. 2. A의 계좌에서 10000원을 B 계좌로 입금합니다. A의 잔액에서 -10000원을 차감하고 저장합니다. 3. B의 계좌를 확인합니다. 4. B의 계좌에 10000원을 더하고 저장합니다. 위처럼 하나의 작업을 진행하는데 이것을 트랜잭션이라고 합니다. 예시를 보니 트랜잭션의 필요성을 생각해볼 수 있습니다. 실패했을 때 만약 잔액이 원상복구 되지 않으.. 2023. 1. 28.
[CS] 시스템 콜 시스템 콜은 운영체제가 커널에 접근하기 위한 인터페이스(추상화) 이다. 유저 프로그램이 운영체제의 서비스를 사용하기 위해서는 시스템 콜을 통해 해당 로직을 실행할 수 있다. 유저 프로그램에서 파일을 읽는 메서드(함수)를 실행시켰다고 생각해보자. 유저프로그램은 직접 파일 시스템에 접근할 수 없다. 유저 모드에서는 시스템 콜을 통해 커널모드로 들어가서 파일을 읽고 다시 시스템 콜을 통해 유저모드로 들어가 해당 메서드를 수행한다. 유저모드 : 유저가 접근할 수 있는 영역, 컴퓨터 자원에 침범하지 못한다. 커널모드 : 모든 컴퓨터 자원에 접근가능한 모드이다. 시스템콜을 통해 모드를 구분하지 않고 시스템에 접근이 가능하게 되면, 보안상 큰 문제가 발생할 수 있다. 이로인해, 파일 시스템은 외부에서의 접근에 보호받.. 2023. 1. 23.
[CS] 스프링 프레임워크란? 먼저 프레임워크란, 뼈대! 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능한 형태로 클래스들을 제공하는 것이다. ex) 자동차 프레임, 뼈대 라이브러리란, 도구! 자주 사용되는 로직을 재사용하기 편리하도록 정리한 코드들의 집합이다. ex) 자동차의 기능을 하는 부품들 스프링의 개념을 알아보자. 스프링(Spring) 은 자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 애플리케이션이다. POJO 기반의 엔터프라이즈 개발을 쉽고 편하게 할 수 있다. (Plain Old Java Object) : 상속, 인터페이스가 필요없는 단순하고 가벼운 객체 주요 특징으로는 스프링의 3요소를 참고했다. 1. DI ( Dependency Injection ) : 의존관계 주입 각 계층에서 서비스들간에 의존성.. 2023. 1. 13.
[CS] HTTP 1.0 / 1.1 / 2 HTTP 는 1.0 부터 시작되었다. HTTP/1.0 은 기본적으로 한 연결당 하나의 요청을 처리한다. 서버로부터 파일을 가져올 때마다 TCP 의 3-way-handshake 가 진행되어 RTT(Round Trip Time 패킷왕복시간) 이 증가되는 단점이 있다. 이를 보완하기 위해 스플리팅 , 코드 압축 , 이미지 Base64 인코딩 등을 사용했다. - 스플리팅 : 하나로 합쳐져 있는 파일(이미지 등)을 다운로드 받아 사용 - 코드 압축 : 빈칸, 개행문자를 없애서 크기를 최소화 - 이미지 Base64 인코딩 : 64진법으로 이루어진 문자열로 인코딩 하는 방법, 서버에 HTTP 요청을 할필요는 없지만 크기가 더 커지는 단점이 있다. HTTP/1.1 은 1.0 과 달리 TCP 초기화를 한번 한 후 kee.. 2023. 1. 11.
[CS] 네트워크 토폴로지 네트워크 토폴로지는 네트워크 설계를 할때 고려해야할 사항이다. 노드와 링크가 어떻게 배치되어있는지에 대한 방식이며 연결형태를 의미한다. 종류로는 트리, 버스, 스타,링, 메시 토폴로지가 있다. 트리 토폴로지는 나무의 뿌리 형태처럼 되어있다. 노드의 추가, 삭제가 쉬으며 특정 노드에 트래픽이 집중될 때 하위 노드에 영향을 끼친다. 버스 토폴로지는 중앙 통신 회선 하나에 여러 개의 노드가 연결되어 공유한다. 하나의 회선으로 설계되어 설치 비용이 적고, 신뢰성이 우수하며, 노드의 추가 삭제가 쉽다. 하지만, 스푸핑(악의적인 다른 노드에 전달) 이 발생할 가능성이 있다. 스타 토폴로지는 별 모양으로 중앙에 있는 노드에 모두 연결되어 있는 형태이다. 노드의 추가 삭제가 쉽고, 노드끼리의 충돌 가능성이 적으며 에러.. 2022. 12. 30.
[CS] 처리량과 지연시간 네트워크 구축에 있어서 이라는 의미는, 많은 처리량을 처리할 수 있으며, 지연시간이 짧고 장애빈도가 적으며 좋은 보안을 갖춘 네트워크를 의미한다. 처리량은 링크를 통해 전달되는 단위 시간당 데이터양을 의미한다. 단위로는 bps(bits per second) 를 사용하며, 초당 전송 or 수신되는 비트 수를 의미한다. 처리량은 사용자들이 많이 접속할 때 커지는 트래픽, 발생하는 에러, 하드웨어 스펙 등의 영향을 받는다. 지연시간은 요청이 처리되는 시간을 의미한다. ( 어떤 메시지가 두 장치 사이를 왕복하는데 걸린 시간 ) 2022. 12. 30.
[CS] 로드 밸런싱(Load Balancing) 로드 밸런싱이란, 둘 이상의 CPU , 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 웹 사이트에 접속하는 트래픽수가 급격히 증가하면서, 1대의 서버로는 감당이 안된다. 대응하기 위해, 하드웨어의 성능을 높이거나(Scale-up) 여러대의 서버(Scale-out) 에게 트래픽을 분할 시키는 것이었다. 하드웨어의 성능 향상은 가격이 너무 비싸기 때문에 보통 서버를 여러대 추가한다. 해당 장점은, 비용뿐만 아니라, 무중단 서비스를 제공할 수 있다. 서버가 여러대로 늘어나면 균등하게 분배해야 하는데 이것을 로드 밸런싱이 해준다. 로드 밸런서는 클라이언트와 서버 사이에 위치시켜, 부하가 일어나지 않게 여러 서버에 분산시켜 준다. 로드 밸런서가 서버를 선택하는 방식은 아래와 같다. 1. 라운드 .. 2022. 12. 27.
[CS] 가비지 컬렉션(Garbage Collection, GC) 이란? 가비지 컬렉션이란? 가비지(Garbage) 는 유효하지 않는 메모리를 뜻한다. JVM 의 Heap 영역에서 동적으로 할당했던 메모리 영역 중 필요없게 된 메모리 영역을 주기적으로 삭제하는 프로세스 장점 : 개발자 입장에서는 메모리 관리 관련해서 신경을쓰지 않고 개발에만 집중할 수 있다. 단점 : 메모리가 언제 해제되는지 정확히 알 수 없다. / GC가 동작하는 동안 다른 동작이 멈춘다. C언어는 free() 라는 함수를 통해 메모리를 해제해주어야 하지만, Java 에서는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문에 따로 해제하는 일이 없다. 대신 불필요한 데이터를 표한하기 위해서는 null로 선언을 해준다. JVM 의 heap 영역은처음 설계될 때 다음의 2가지 전제로 설계되었다고.. 2022. 12. 24.