개발 33

TDD(Test Driven Development)에 대해서

1. TDD란? Test Driven Development의 약자로 '테스트 주도 개발'이라고 합니다. 반톡 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 짧은 개발 주기의 반복에 의존하는 개발 프로세스며, 애자일 방법론 중 하나인 eXtream Programming(XP)의 'Test-First' 개념에 기반을 둔 단순한 설계를 중요시한다. 2. TDD는 왜 하는 걸까? TDD의 바이블을 집필한 '켄트 백'은 'TDD가 단순한 설계를 장려하고 자신감을 불어넣어준다.'라고 말했습니다. TDD는 RED -> GREEN -> BLUE 세가지 사이클을 반복하는 3단계의 개발주기를 갖습니다. Red 단계에서는 실패하는 테스트..

개발/개발노트 2023.05.03

[운영체제] CPU 스케줄링

[CPU 스케줄링] 운영체제는 CPU 스케줄링을 통해 Ready Queue에 있는 프로세스 중에 어떤 프로세스에 CPU를 먼저 할당할 것인지를 결정합니다. 이를 CPU 스케줄링이라고 하고, 이때 순서를 정하는 알고리즘이 여러 가지가 있습니다. (Queue에 있는 레코드들은 일반적으로 프로세스 제어 블록(PCB)들 입니다.) 또한, Dispatcher는 CPU 제어권을 CPU 스케줄러에 의해 선택된 프로세스에게 넘기는 행위를 Context Switch라고 합니다. [규모에 따른 CPU 스케줄러의 종류] 1) 장기 스케줄러(Long-term scheduler, Job scheduler) 작업 스케줄러라고 부르며, 어떤 프로세스를 Ready Queue에 넣을지 결정하는 역할을 합니다. 디스크에서 하나의 프로그..

개발/개발노트 2023.04.22

[운영체제] PCB & Context Switching

1. PCB(Process Control Block)란? - 운영체제가 프로세스의 메타데이터를 저장해 놓을 수 있는 저장 장소를 뜻합니다. 프로세스는 운영체제가 부팅 과정을 통해 RAM으로 이동해서 컴퓨터를 장악한 후에 프로세스가 여러개 실행됩니다. 이때 프로세스 생성될 때 PCB라는 곳에 저장됩니다. - 메타 데이터를 통해 CPU는 각 프로세스를 구분할 수 있고, 이를 통해 프로세스가 여러개가 되었을 때 전부 관리 할 수 있습니다. (프로세스 여러 개를 CPU 스케줄링을 통해 관리하는 것을 Process Management라고 부릅니다.) - PCB는 운영체제가 해당 프로세스를 위해 관리하는 데이터 구조이기 때문에 운영체제 영역에 만들어 집니다. [Metadata의 생성과 PCB] - 프로그램이 실행을..

개발/개발노트 2023.04.19

[Web] Web Server? WAS?

Web Server? 웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떤 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버입니다. (정적 컨텐츠는 이미지, 파일, HTML 문서, CSS 등 즉시 응답 가능한 컨텐츠를 말합니다.) 또는, 웹 서버가 동적 컨텐츠를 요청 받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달해주는 역할도 합니다. 웹 서버에서는 정적 컨텐츠만 처리하는 기능 분배를 해서 서버 부담을 줄일 수 있습니다. 웹 서버에는 Apache, NginX 등이 있습니다. WAS(Web Application Server)? WAS란 사용자의 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 다양한 로직 처리를 요구하는 동적 컨텐츠..

개발/개발노트 2023.04.15

[Network] REST, REST API, RESTful

1. REST(Respresentational State Transfer) REST는 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다. 쉽게 얘기하면 HTTP를 잘 사용하기 위한 아키텍처 스타일 입니다. 더보기 CRUD Operation란? CRUD는 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. REST에서의 CRUD는 POST(데이터 생성), GET(데이터 조회), PUT, PATCH(데이터 수정), DELETE(데이터 삭제) 이다. REST 구성 요소 1. 자원(Resource) - HTTP URI Uniform Resource Identifier의 약자인 URI 뜻은 우리말로 ‘통합 ..

개발/개발노트 2023.04.12

[Network] Blocking I/O, Non-blocking I/O

1. I/O가 성능에 미치는 영향 I/O란 데이터의 입력(Input) 과 출력(Output)이 이뤄지는 작업을 I/O라고 한다. 대표적인 예는 파일을 업로드하고 다운로드하는 파일 I/O가 있고, 네트워크를 통해서 다른 서버로 데이터를 전송하거나, 다른 서버로 부터 데이터를 전송 받는 작업도 I/O에 포함된다. 함수를 실행할 때, 일정 시간동안은 CPU를 잡아두고 사용하기 때문에 다음 작업 실행을 block한다. 따라서 이렇게 CPU를 사용하는 작업으로 인한 blocking은 개발자가 할 수 있는게 별로 없는데, I/O로 인한 blocking은 CPU를 긴 시간동안 IDEL하게 두기 때문에 다른 작업을 할 수 있음에도 오랫동안 다른 작업을 실행할 수 없어 비효율적이다. 2. Blocking I/O란? A ..

개발/개발노트 2023.04.08

Blocking, Non-blocking & Synchronous, Asynchronous 차이점

1. Blocking, Non-blocking - Blocking과 Non-blocking는 요청을 받은 쪽에서 처리가 끝나기 전에 제어권을 넘기는지, 안넘기는지에 중점을 둔다. - Blocking(블로킹)은 단어 뜻 그대로 막히거나, 제한된, 대기하는 상태를 얘기한다. - A 함수가 B 함수를 호출을 했을 때, B 함수가 자신의 할 일이 끝나기 전까지 A 함수에게 제어권을 주지 않으면 Block. - A 함수가 B 함수를 호출 할 때, B 함수가 자신의 할 일이 끝나지 않았어도, 제어권을 바로 A 함수에게 넘겨주면서, A 함수가 다른 일을 진행할 수 있도록 해주면 Non-block. 2. Synchronous, Asynchronous - Synchronous과 Asynchronous는 동시에 발생한 (..

개발/개발노트 2023.04.05

[Spring] @Autowired, @Inject, @Resource 사용법 및 차이

1. 개념 @Resource @Inject @Autowired 범용 자바에서 지원 자바에서 지원 스프링 전용 위치 필드, setter메서드 필드, 생성자, setter메서드, 일반 메서드 필드, 생성자, setter 메서드 연결 방식 이름으로 연결 타입에 맞춰서 연결 타입에 맞춰서 연결 연결을 위한 검색 방식 이름->타입->@Qulifier ->실패 타입->@Qulifier->이름 ->실패 타입->이름>@Qulifier ->실패 강제 연결 방식 @Resource(name="title") @Qualifier("title") 공통점 자동 의존성 주입(DI) 2. 예시 1) @Resource @Resource private Apple banana; //이름으로 연결하기 때문에 banana-> Banana로 연..

[Spring] @Resource, @inject, @autowired, static 으로 호출하는 방법

질문) Controller나 Service에서 다른 java 파일을 호출해서 사용하고 싶을 땐 어떻게 해야하나요? 답) 두가지 방법이 있습니다. 첫번째는 어노테이션(@) 사용하는 방법, 두번째, static을 사용하는 방법이 있습니다. 우선 어노테이션(@) 사용 방법에는 대표적으로 3가지가 있습니다. @Resource @Inject @Autowired 범용 자바에서 지원 자바에서 지원 스프링 전용 연결 방식 이름으로 연결 타입에 맞춰서 연결 타입에 맞춰서 연결 해당 코드위에 위 세가지 (@Resource, @Inject, @Autowired) 중 하나를 입력하면, 해당 java 파일을 사용할 수 있습니다. (자동 의존성 주입) 스프링 프레임워크를 사용하다가 다른 프레임워크로 바뀔 가능성이 있다면 @Inj..

[TCP/IP] 인터넷 계층 프로토콜 (IP, ICMP, IGMP, ARP, RARP)

1. IP(인터넷 프로토콜, Internet Protocol) 목적지에 패킷(메세지)을 배달해주는 역할 Uncasting : 1:1통신(송신자 1명과 수신자 1명) Multicasting : 1 : n 통신 (송신자 1명과 다수의 수신자) 비신뢰성, 비연결지향 데이터그램 프로토콜 송신자와 수신자가 서로 연결이 되어있는지 확인하지 않고 보냄 --> 비연결지향 수신자 쪽으로 보내는 과정에서 에러 상황이 발생했을 경우, 보낸 정보가 제대로 갔는지 보장하지 않음 --> 비신뢰성 2. ICMP(Internet Control Message Protocol) IP 프로토콜의 단점을 보완하기 위한 프로토콜 역할 전송 중 에러 발생 시 에러 상황에 대한 메세지를 생성하여 송신자에게 보내주는 역할 네트워크 상태 진단해주는..

개발/개발노트 2021.03.28