Computer Science
-
[소프트웨어공학] TDD와 BDDComputer Science/Software Engineering 2024. 1. 17. 10:00
TDD TDD(Test-Driven Development, 테스트 주도 개발)는 소프트웨어 개발 방법론 중 하나로, 선 개발 후 테스트 방식이 아니라 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다. 즉 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식이다. 반복 테스트를 위한 소프트웨어 방법론으로 작은 단위의 테스트를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. TDD를 이용한 개발 방법 1. 테스트 케이스 작성 만들고 싶은 기능을 점검할 테스트 코드를 작성한다. 이때 아직 기능 코드를 구현하지 않았으므로 테스트 결과는 실패로 반환된다. 실패하는 테스트를 가장 빠르게 구현하는 방법은 아무 값이나 반환하도록 하는 것이다. 2. 테스트 케이스를 통과하는 코드 작..
-
[운영체제(OS)] 프로세스와 스레드, Context Switch란?Computer Science/Operating System 2024. 1. 10. 09:30
프로세스 (Process) 프로세스 : 실행 중인 프로그램 프로세스 Context 프로세스의 context는 크게 3가지로 분류할 수 있다. 하드웨어 context : CPU 수행상태를 나타내는 것으로 PC(Program Counter)와 각종 레지스터에 저장하고 있는 값들 프로세스의 주소 공간 : 코드(code), 데이터(data), 스택(stack)으로 구성된 프로세스만의 독자적인 주소 공간 커널 상의 context : 프로세스 관리를 위한 자료구조인 PCB(Process Control Block)와 Kernel stack(커널 내의 주소) 커널? 리눅스 구성요소 중 핵심 구성 요소. 하드웨어와 프로세스 운용을 위한 인터페이스. 프로세스의 주소 공간 (Big Endian) OS Code 실행 명령을 ..
-
[MongoDB] MongoDB란?Computer Science/Database 2024. 1. 3. 01:11
기존의 사용하던 RDB는 당시 Disk Storage가 매우 고가의 제품이라 데이터 중복을 줄이는데 집중했다. 방대한 양의 데이터를 처리하기 위해서 성능 향상이 필요했지만 수직적 확장의 경우 비용이 많이 소모되고, 수평적 확장의 경우 관계 테이블을 모두 동일한 서버에 보관해야했기에 확장이 어려웠다. 이후 Disk Storage가 더이상 큰 이슈가 아니게 되면서 데이터베이스의 확장성과 성능을 위해 NoSQL이 등장했다. NoSQL은 RDB가 하지 못했던 것들을 해결하며 다양한 장점을 제공한다. 데이터 가시성이 좋고 Join없이 조회할 수 있어 읽기 성능, 응답 속도가 빠르다. 스키마가 유연해서 어플리케이션의 요구사항에 맞게 데이터를 수용할 수 있다. Scale-Out이 간편하다. 역정규화에 따라 데이터 중..
-
[IPC] IPC(Inter-Process Communication)란?Computer Science 2023. 12. 28. 16:31
IPC IPC는 Inter-Process Communication의 약자로 프로세스 간 통신을 말한다. 프로세스는 독립된 실행 객체로서 서로 독립되어 있기 때문에 다른 프로세스의 영향을 받지 않는다. 대신 서로 간 통신을 위해 커널 영역에서 IPC라는 내부 프로세스 간 통신을 제공한다. 커널 운영체제 자체도 소프트웨어이기 때문에 메모리에 올려야 사용할 수 있다. 하지만 메모리 공간의 제약으로 운영체제 중 필요한 부분 만을 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려 사용하게 된다. 이때 메모리에 상주하는 운영체제의 부분을 커널이라고 한다. 보통은 운영체제라고 하면 커널을 말한다. 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분이다. 프로세스 VS 스레드 프로세스는 컴퓨터에서..
-
[Kafka] 아파치 카프카(Apache Kafka)에 대해서Computer Science/Database 2023. 12. 20. 01:49
어플리케이션에 사용자가 많아지며 트래픽이 증가하고, 요청에 대한 추가작업이 많아질 때 빠른 응답과 성능을 위해 메시지 큐를 사용할 수 있다. 메시지큐는 Producer와 Consumer 사이에서 메시지를 저장하고 전달하는 중간 장치로서, 비동기적으로 작동하며 큐에 담긴 메시지를 처리한다. 메시지큐를 포함하는 메시지 브로커로는 RabbitMQ, Redis, ActiveMQ, Kafka 등이 있다. 그 중 Kafka에 대해 알아보자! (메시지 큐를 모른다면 여기로) Kafka는 왜 생겼을까? Kafka(카프카)는 미국의 대표적인 비즈니스 인맥 소셜 네트워크 서비스인 링크드인(LinkedIn)에서 처음 출발한 기술이다. 링크드인 사이트가 성장하면서 발생했던 여러 이슈들을 해결하기 위해 개발되었다. 기존의 링크..
-
[메시지 큐] 메시지 큐에 대해서 (메시지 큐, MOM, 특징, 이점 등)Computer Science/Database 2023. 12. 10. 21:18
MOM (Message Oriented Middleware) MOM은 메시지 지향 미들 웨어로서 어플리케이션의 메시지를 중간에서 관리해주는 시스템이다. 여기서 미들웨어란 무엇일까? 개념적으로 미들웨어는 응용프로그램과 운영체제 사이에서 두 요소간 차이에 상관없이 통신을 가능하게 해주는 계층을 말한다. 분산 컴퓨팅 환경에서 미들웨어는 분산 네트워크에서 애플리케이션 또는 애플리케이션 구성요소 간에 통신을 가능하게 하는 소프트웨어라고 한다. 미들웨어는 다음과 같은 범주로 나눌 수 있다. RPC(Remote Procedure Call) 기반 미들웨어 ORB(Object Request Broker) 기반 미들웨어 MOM(Message Oriented Middleware) 기반 미들웨어 이 중 MOM은 분산 응용 프..
-
[Redis] Redis에 대해서 (Redis란, 특징, 영속성, 자료구조, 아키텍처)Computer Science/Database 2023. 12. 10. 20:15
데이터와 트랙픽의 양이 기하급수적으로 증가하면서 한대의 관계형 데이터베이스를 사용하는 것은 큰 비용이 든다. 이런 상황에서 NoSQL은 여러 대의 컴퓨터에 데이터를 분산하여 저장하는 것을 목표로 등장했다. NoSQL 데이터베이스 중 하나인 Redis는 key-value 형태로 저장하는 인메모리 데이터 베이스로서 데이터베이스 뿐만 아니라 캐시, 메시지 브로커 및 스트리밍 엔진 등 다양한 용도로 사용되는 오픈소스이다. Redis에 대해서 자세히 알아보자! 📍 Redis란? Redis는 Remote Dictionary Server의 약자로 외부 딕셔너리(key-value) 형태의 서버이다. NoSQL 데이터베이스 중 하나로 고급 키-값 저장소이다. In-Memory 데이터 베이스로서 memcached와 유사한..
-
[SQL] 집계 함수를 쓰기 어려울 때 over()와 서브 쿼리 중 뭐를 사용해야 할까?Computer Science/Database 2023. 10. 13. 17:52
🎈시작 MySQL에서 world database를 사용해 쿼리를 뚱땅거리던 중 다음과 같은 쿼리를 작성해야하는 경우가 있었다. 어떤 데이터에 대한 조회를 해야할 때 각 튜플의 데이터를 확인하면서 튜플이 속한 그룹의 평균 값을 확인하고 싶은 경우가 있었는데 (예를 들자면 전체 학생을 조회할 때 학생이 속한 반의 평균 키를 함께 조회하고 싶은 경우...) 여기서 over와 서브쿼리를 사용하며 알게된 점을 작성해보려고 한다. 🧩 서브 쿼리와 OVER() 본문에 들어가기 전 서브 쿼리와 OVER() 가 무엇인지 알아보자 서브 쿼리 서브 쿼리란 SQL 쿼리 내에서 다른 SQL 쿼리의 일부로 사용되는 쿼리이다. 즉, 하나의 쿼리 안에 다른 SQL 쿼리가 포함되는 것! 예를 들어, 도시 테이블에서 전체 인구 평균 이..