Back-End
-
[Backend] TCD와 UDPBack-End 2022. 3. 21. 11:25
TCD와 UDP - TCP (Transmission Control Protocol) 신뢰성이 요구되는 애플리케이션에서 사용된다. 브라우저나 애플리케이션이 데이터를 송신과 수신할 경우에 사용된다. 네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟(데이터, 메세지, 세그먼트라는 블록 단위)를 안정적으로 순서대로 에러가 없이 교환할 수 있게 된다. - TCP (Transmission Control Protocol) 특징 연결형 서비스 = 가상 회선 방식을 제공한다. 3-way handshaking 과정을 통해 연결을 설정 4-way handshaking을 통해 연결을 해제 흐름제어(Flow control) = 데이터 처리 속도를 조절해서 수신자의 버퍼 오버플로우를 방지한다. 송신하는 곳에서 감당..
-
[Backend] 객체 지향 프로그래밍 OOP(object oriented programming)Back-End 2022. 3. 15. 18:00
객체 지향 프로그래밍 OOP(object oriented programming) 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체 지향 프로그래밍 장점과 단점 장점 코드 재사용성 다른 개발자가 만든 클래스를 이용할 수 있으며, 상속을 통하여 확장해서 사용이 가능하다. 쉬운 유지보수 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아서 수정해야하는 반면에 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다. 대형 프로젝트에 적합 클래스 단위로 모듈화를 시켜서 개발할 수 있..
-
[Backend] DDD(Domain-Driven-Design) - 도메인 주도 설계Back-End 2022. 3. 15. 13:57
도메인 (Domain)? 사전적인 의미는 영역과 집합이다. DDD에서 말하는 도메인은 비즈니스 도메인이다. 비즈니스 도메인은 유사한 업무의 집합이다. 애플리케이션은 비즈니스 도메인 별로 나누어서 설계와 개발할 수 있다. DDD(Domain-Driven-Design) 비즈니스 도메인 별로 나누어서 설계하는 방식이다. 기존 애플리케이션 설계가 비즈니스 도메인에 대한 이해가 부족한 상태에서 개발되었다는 점에서 시작되었다. DDD에서는 기존의 협업에서 IT로의 일방향 소통구조를 탈피하여 현업과 IT의 쌍방향 커뮤니케이션을 중요하게 생각한다. DDD의 목표는 loosly coupling과 High cohesion이다. 애플리케이션 또는 그 안의 모듈간의 의존성은 최소화하고, 응집성은 최대화한다. DDD는 Stra..
-
[Backend] 도메인이란Back-End 2022. 3. 15. 13:37
IP 인터넷에 연결되어 있는 장치들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는 것을 IP라고 한다. 도메인 IP는 사람이 이해하고 기억하기 어려워서 각 IP에 이름을 부여하는 것을 도메인이라고 한다. 도메인 이름 도메인 이름 3단계 www.은 도메인 이름에 포함되지 않은 호스트명이다. com과 co.kr의 차이점은 최상위 도메인 com을 사용한 것이고 co.kr은 국가 정책에 따른 국가 최상위 도메인을 사용한 것이다. 1단계 = 국가 도메인 (kr) 2단계 = 도메인의 성격 (해당 도메인이 사업체의 도메인이라는 것을 알려주는 co) 3단계 = 도메인 이름을 등록하는 사람이 원하는 이름 1단계 도메인을 TLD(Top-Level Domain) 2단계 도메인을 SLD(Second-Level Domai..
-
-
테스트 코드의 필요성Back-End 2022. 2. 23. 16:52
현재까지 부트캠프에서 프로젝트를 할 때 테스트는 Postman이나 Console을 통해서 정상인지 아닌지 확인을 하는 테스트를 해왔다. 테스트 코드 작성이라는 것을 알았지만 시도를 해보기에는 프로젝트 마감 일정이 타이트해서 결국엔 이론 공부만 했다. 위와 같은 방식으로 테스트를 진행을 했을 때 단점들이 있었다. 서버를 띄워서 Postman과 같은 프로그램으로 입력을 하나하나 해야하는데 있어서 시간이 많이 소모가 되었고, 계속 반복적으로 많은 테스트를 하다보니 Use Case에 대한 기록이 힘들었다. 테스트 코드의 필요성 주요 기능마다 테스트 코드를 작성하는데 있어서 생산성이 저하가 될 수 있는 단점이 존재하지만 문서와 같은 테스트 결과여부 기록이 아니라 실제로 메서드가 요구사항대로 작동하는지 확인이 가능..
-
TDD (Test-Driven Development) - 테스트 주도 개발Back-End 2022. 2. 23. 11:56
TDD (Test-Driven Development) - 테스트 주도 개발 TDD는 테스트 코드를 먼저 작성을 하고 프로그램 코드를 작성하는 과정을 말한다. TDD 프로세스는 다음과 같은 3가지 단계로 나눌 수 있다. RED (테스트 실패) 구체적인 하나의 기능에 대한 하나의 테스트를 추가하고, 테스트가 실패하는지 확인하는 단계. 테스트가 실패를 해야 해당 테스트가 신뢰성이 있다고 볼 수 있다. 다만, 실패한 이유가 테스트 코드의 문제가 아니여야 한다. GREEN (테스트 성공) 모든 테스트에 대해서 코드가 성공을 하도록 코드를 수정하는 단계. 테스트 성공을 위해서 최소한의 코드 변경이 이뤄져야한다. 그 이유는 필요 이상으로 코드가 변경이 된다면 다른 단계에서 악영향을 끼칠 수 있기 때문이다. REFAC..
-
OSI 7계층Back-End 2022. 2. 23. 09:47
7계층 (응용계층, Application) 사용자와 컴퓨터간의 연결을 제공할 수 있는 User Interface를 제공하는 영역이다. Application을 이용해서 필요한 영역과 대화를 할 수 있다. 6계층 (표현계층, Presentation) 7계층에서 만들어진 데이터에 확장자를 붙여 어떤 유형의 데이터인지를 알려주는 계층 암호화를 수행한다. 또한 데이터의 동일된 형식을 제공해준다. 5계층 (세션계층, Session) 통신 대상 중 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 동시 송수신 방식 (duflex), 반이중 방식 (harf-duflex), 전이중방식 (full-duflex), 체크포인팅, 유효, 종료, 재시작 등의 과정을 수행한다. 통신 경로 확립이나 단절, 전달방식을..