IBM API Connect

  • 클라우드 간 API 작성, 관리를 수행할 수 있는 확장형 API 플랫폼 (보안성/검증성/확장성/직관성/유연성/강력성)
  • 애플리케이션과 데이터가 있는 모든 위치에서 작동 가능 (예: 온프레미스, 컨테이너, 클라우드)
    • Docker 컨테이너 지원가능한 모든 위치에 배치됨
    • 멀티클라우드 환경에서 서비스와 데이터를 안정적으로 관리, 보호

 

  • 고급기능
    1. API 관리자 : 내부 용도로 API를 관리하거나 REST 또는 SOAP API로서 서비스를 외부에서 수익화하고 관리할 수 있게 하는 사용자 인터페이스
    2. IBM DataPower Gateway : 엔터프라이즈 레벨에서 API 트래픽, 상호작용을 보호, 제어, 로깅/ 컨테이너 지원
    3. 개발자 포털 : 회사 브랜드 포털을 이용해 API를 애플리케이션 개발자와 공유. 개발자는 API 검색, 등록, 연관 애플리케이션 등록, 배치가능
    4. 개발자 툴킷 : API, LoopBack® 애플리케이션을 모델링, 개발, 테스트
    5. 클라우드 관리자 : 간단한 사용자 인터페이스를 이용해 API Connect 온프레미스 클라우드를 구성, 관리, 모니터링

 

 

DataPower Gateway

  • API connect의 보안 구현
  • 완성도/효율성/안전성
  • 공통 보안, 트래픽, 중개 및 가속화 기능을 중앙 집중화
  • 드래그앤드롭 보안 정책

  • 주요정책
    1. 레코드의 시스템 과부하를 방지하는 속도 제한
    2. 데이터 변환(예: JSON에서 XML로 변환)을 위한 중개 정책
    3. 올바른 서비스로 수신 트래픽을 지능적으로 라우팅하는 트래픽 관리
  • IBM CloudTM 또는 OVA나 Docker 파일이 설치될 수 있는 모든 위치에서 실행 가능
    1. 써드파티 퍼블릭 클라우드 (예: Amazon Web Services, Microsoft Azure, Google Cloud Platform)
    2. 온프레미스 데이터 센터 (예 : IBM Cloud Private)
    3. 프라이빗 클라우드 (예 :  표준 Kubernetes)

 


Reference

www.ibm.com/kr-ko/cloud/api-connect/secure

 

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
JavaScript  (0) 2021.05.06
React & Vue  (0) 2021.05.06
RESTful, TDD, immutable, MVC  (0) 2021.05.04

DBMS : 데이터베이스 관리 시스템

다수의 사용자가 데이터베이스 내의 데이터를 접근할 수 있도록 설계된 시스템

  • 정의 기능(DDL: Data Definition Language)
    • 데이터베이스가 어떤 용도이며 어떤 식으로 이용될것이라는 것에 대한 정의가 필요함
    • CREATE, ALTER, DROP, RENAME
  • 조작 기능(DML: Data Manipulation Language)
    • 데이터베이스를 만들었을 때 그 정보를 수정하거나 삭제 추가 검색 할 수 있어야함
    • SELECT, INSERT, UPDATE, DELETE
  • 제어 기능(DCL: Data Control Language)
    • 데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령
    • GRANT REVOKE

 


UML (Unified Modeling Language) : 통합 모델링 언어 - 프로그램 설계를 표현하기 위해 사용하는 그림으로 된 표기법

 


View = 가상 테이블

하나 이상의 테이블에서 유도된 가상 테이블

  • 사용자가 view에 접근했을 때 해당하는 데이터를 원본에서 가져옴
  • view에 나타나지 않은 데이터를 간편히 보호할 수 있는 장점 존재 (데이터를 제한적으로 보여줄 수 있음)


정규화

  • 중복 최소화/ 데이터 구조화/ 불필요한 데이터 제거/ 이상현상 방지!
  • 테이블 구성을 논리적, 직관적으로 함 
  • CRUD 많이 일어나는 DB는 정규화 되는게 좋음 - OLTP (OnLine Analytical Processing) DB  : 온라인 거래 시스템

 

 

이상현상 (Anomaly)

릴레이션에서 일부 속성들의 종속 > 데이터 중복 > 데이터 불일치가 발생하는 것 (insert, update, delete)

  • 갱신 이상 (Modification Anomaly) : 반복된 데이터 중에 일부를 갱신할 시 데이터의 불일치 발생
  • 삽입 이상 (Insertion Anomaly) : 불필요한 정보를 함께 저장하지 않고서는 어떤 정보를 저장하는 것이 불가능하다.
  • 삭제 이상 (Deletion Anomaly) : 필요한 정보를 함께 삭제하지 않고서는 어떤 정보를 삭제하는 것이 불가능하다.

 

반정규화

  • 정규화 역과정. 정규화된 시스템을 성능 향상개발과 운영의 단순화를 위해 역으로 정규화를 수행.
  • 조회에 대한 처리가 중요하다고 판단될 때 부분적으로 반정규화 수행   
  • 일반적으로 join을 많이 사용해야 할 경우, 대량의 범위를 자주 처리하는 경우 등 

 



데이터베이스 무결성

  • DB 설계에서 가장 중요!
  • 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구함 (같은 값 X)
  • 외래키 값은 NULL이거나 참조 테이블의 PK값이어야 함
  • 한 컬럼에 대해 NULL 허용 여부와 자료형, 규칙으로 타당한 데이터 값 지정

 

- 무결성 보장 방법

  • 데이터 조작 프로그램 내에서 데이터 생성, 수정, 삭제 시 무결성 조건 검증하기
  • 트리거 이벤트 시 저장 SQL을 실행하고 무결성 조건을 실행하기
  • DB 제약조건 기능 선언하기


트리거자동으로 실행되도록 정의된 저장 프로시저

  • insert, update, delete문에 대한 응답을 자동으로 호출
  • 업무 규칙 보장, 업무 처리 자동화, 데이터 무결성 강화


Oracle VS MySQL

오라클 : 대규모 트랜잭션 로드 처리, 성능 최적화를 위해 여러 서버에 대용량 DB 분산

MySQL : 단일 데이터베이스로 제한, 대용량 데이터베이스로는 부적합. 작은 프로젝트에서 적용시키기 용이하며 이전 상태를 복원하는데 commit과 rollback만 존재

 


Commit과 Rollback

  • Commit : 하나의 논리적 단위(트랜잭션)에 대한 작업이 성공적으로 끝났을 때, 이 트랜잭션이 행한 갱신 연산이 완료된 것을 트랜잭션 관리자에게 알려주는 연산
  • Rollback : 하나의 트랜잭션 처리가 비정상적으로 종료되어 DB의 일관성을 깨뜨렸을 때, 모든 연산을 취소시키는 연산


JDBC와 ODBC

  • JDBC : 자바에서 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 가능 DBMS 종류에 따라 맞는 jdbc를 설치해야함
  • ODBC : 응용 프로그램에서 DB 접근을 위한 표준 개방형 응용 프로그램 인터페이스. MS사에서 만듦, Excel/Text 등 여러 종류의 데이터에 접근할 수 있음



 


Reference

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

 

데이터베이스 이상 현상(Anomaly)

이상 현상 (Anomaly) 정규화를 하기 전에 봤으면 더 이해하기 쉬웠을까? 라는 생각을 했다. 좋은 관계형 데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상(Anomaly) 이 생기지 않도록 고려해

1000hg.tistory.com

 

 

데이터베이스 정규화

데이터베이스 정규화란? 데이터 베이스 정규화란 데이터의 중복을 줄이고, 무결성을 항상 시키는 등 여러 목적을 달성하기 위해 관계형 데이터베이스를 정규화된 형태로 재디자인하는 것을 말

1000hg.tistory.com

 

반응형

HTTP & HTTPS

 

HTTP : Hypertext Transfer Protocol : HTML 전송을 위한 통신규약

 

HTTP 동작 순서 : TCP → HTTP

HTTPS 동작 순서 : TCP → SSL → HTTP

 

SSL(Secure Socket Layer)프로토콜 = TLS(Transport Layer Security) : 정보를 암호화시킴 

  • 대칭키 : 암호화 키 = 복호화 키 
  • 공개키-개인키 : 두개의 키/ 공개키-암호화, 개인키(비밀키)-복호화 
  • SSL 동작법 : 클라이언트-서버 주고받는 실제 데이터 = 대칭키 / 대칭키의 키 = 공개키

RSA : SSL/TLS에 가장 많이 사용되는 공개키 암호화 알고리즘 (이름 뜻 : 개발한 세 사람의 성을 따서 만든거;)

 - 공개키로 암호화 > 개인키로만 복호화 / 개인키로 암호화 > 공개키로만 복호화 

 

모든 사이트가 HTTPS로 하지 않는 이유 : 암호화 과정으로 인한 속도 저하 발생

 

 

 


 

GET & POST

가장 많이 사용되는 HTTP 메서드로 HTTP 프로토콜을 이용해 서버에 무언가 요청할 때 사용하는 방식이다.

GET (select) : 데이터 조회, 검색
URL을 통해 모든 파라미터를 전달 > 주소창에 전달 값이 노출됨. URL 길이가 제한이 있기 때문에 전송 데이터 양이 한정되어 있고, 형식에 맞지 않으면 인코딩해서 전달해야 함 

POST (수행) : 데이터/서버의 값이나 상태 변경 (등록, 수정)
HTTP BODY에 데이터를 포함해서 전달 > 웹 브라우저 사용자의 눈에는 직접적으로 파라미터가 노출되지 않고 길이 제한도 없음.

 

하기 메소드들은 POST 메소드로도 구현 가능하다. 좀더 기능을 세부화 했다고 보면 된다.

  • PUT: 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH: 리소스 부분 변경
  • DELETE: 리소스 삭제

그외

  • HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

Reference

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

[정보보안] SSL(Secure Socket Layer) 이란

현재 근무 중인 업체에서 SSL 인증서 적용 작업이 필요하다고 합니다. SSL 인증서관련 필요한 것이 무엇인지에 대한 요청이 있었습니다. 간단하게 SSL에 대해 정리해보겠습니다. 1. SSL 개념 잡기 SSL

12bme.tistory.com

 

RSA 암호화 - 나무위키

RSA 방식으로 암호화를 하기 위해선 먼저 키를 만들어야 한다. 그 과정은 다음과 같다. 두 소수 p,q p , q p,q 를 준비한다.[4]p−1, q−1 p - 1,\ q - 1 p−1, q−1과 각각 서로소인 정수 eee[5]를 준비한다.[6

namu.wiki

 

[HTTP] 주요 메서드 5가지 정리(GET / POST / PUT / PATCH / DELETE)

📖 ✏️ TIL 시리즈에 작성된 글은 '매일 매일 학습한 지식 조각을 메모해 놓은 포스팅'입니다. 공유가 아닌 개인적인 학습 내용 기록을 목적으로 작성되었음을 알려드립니다.

velog.io

 

반응형

언어의 목적 : 페이지의 동적 제어

 

객체 기반의 스크립트 언어 (컴파일 X, 텍스트로 실행)

함수기반 언어 (변수 함수 내에서만 사용가능)

웹 브라우저에서 실행 (html/css에 의존적)

모듈화 미지원

동적타입 (변수 타입 지정 없어도 가능)

멀티 패러다임 언어 (객체 지향/함수형 프로그래밍 둘다 지원)


자바스크립트가 주로 사용되는 프로젝트

▷ 동적인 싱글 페이지 애플리케이션(SPA)
▷ 제이쿼리(jQuery), 앵귤러JS(AngularJS), 백본(Backbone.js), 엠버(Ember.js), 리액트(React.js) 등
▷ 노드(Node.js), 몽고디비(MongoDB), 익스프레스(Express.js) 등
모바일 앱 개발 : 리액트 네이티브(React Native), 폰갭(PhoneGap) 등

 

 


Reference

 

자바 vs 자바스크립트

이 글은 자바와 자바스크립트를 혼동하는 사람, 차이점이 궁금한 사람 등을 위하여 쓴 글입니다.또한 자바스크립트는 다른 언어에 비해 어떤 단점이 있으며 그 단점들을 어떻게 극복해야할지에

perfectacle.github.io

 

 

자바 VS 자바스크립트, 엄연히 다르다? (차이점, 핵심 기능 비교) - Wishket

자바 VS 자바스크립트, 엄연히 다르다? 과연 이 두 개발언어의 차이점은 무엇일까요? 이번 시간 위시켓이 꼼꼼하게 알려드리겠습니다! 지금 바로 만나보세요:)

blog.wishket.com

 

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
[IBM API connect] 특징  (2) 2021.05.11
React & Vue  (0) 2021.05.06
RESTful, TDD, immutable, MVC  (0) 2021.05.04

React 와 Vue는 차이점보다 유사점이 더 많은 UI 라이브러리이다.

 

공통점

  • Javascript 기반의 Frontend Framework
  • 반응적이고 조합 가능한 컴포넌트 제공 (Reactive Component)
  • Virtual DOM 으로 빠른 렌더링
  • 경량 라이브러리
  • Server Side Rendering
  • 라우터, 번들러, state management 와 결합이 쉬움
  • 훌륭한 개발자 커뮤니티와 지원

 

차이점

  • React에서는 모든 것(HTML, CSS...)이 JavaScript 이다
  • Vue는 고전적인 웹기술들을 받아들여서 그 기반 위에 만들어짐

 

  • Vue.js는 사용자에게 쉽게 느껴지는 API를 제공하기 위해 라이브러리가 직접 헤비 리프팅을 하는 경우가 많다.
  • React는 Vue.js에 비해 사용자 및 사용처에 대해 더 적은 가정을 하고, 컴포넌트 기반의 선언적 UI 렌더링이라는 가장 핵심적인 기능과 관련된 부분만 코어에 포함한다.

Vue 의 장점

  • Template 과 Render Function 을 모두 사용할 수 있는 옵션
  • 간편한 Syntax 와 프로젝트 설정
  • 빠른 렌더링과 더 작은 용량

React 의 장점

  • 큰 규모에서 더 빛을 발하고, 테스팅이 수월
  • Web 과 Native 앱 개발에 모두 사용 가능
  • 더 큰 개발자 생태계에서 오는 많은 레퍼런스와 도구들

 

 


Reference

 

NAVER 기술 면접 리뷰

NAVER 기술 면접 질문과 답변을 정리합니다.

martianlee.github.io

 

 

React 인가 Vue 인가?

(번역) 프론트엔드 프레임워크 왕 React 와 신흥강자 Vue 를 프레임워크 특성에서 비교한 글

joshua1988.github.io

 

 

다른 프레임워크와의 비교 — Vue.js

Vue.js - 프로그레시브 자바스크립트 프레임워크

kr.vuejs.org

 

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
[IBM API connect] 특징  (2) 2021.05.11
JavaScript  (0) 2021.05.06
RESTful, TDD, immutable, MVC  (0) 2021.05.04

인터넷에서 데이터는 효율적인 라우팅을 위해 패킷 단위로 쪼개져 같은 목적지로 전송되며

TCP는 패킷에 각각 번호를 부여하여 목적지에서 재조립한다. (패킷 분실 확인 처리/ 패킷 추적)

 

패킷의 구성 : 헤더 (수신단 인터넷 주소, 순서) / 데이터 / 테일러 (에러정보)

 


1. 흐름제어 (정지-대기, 슬라이딩 윈도우)

송수신단 사이 데이터 처리속도 차이를 제어 > 데이터 처리속도를 조절해 수신자의 버퍼 오버플로우 방지

 

1) 정지-대기 (stop and wait)

매번 패킷에 전송 후 정지-대기, 확인 응답 받은 뒤 다음 패킷 전송가능

> 비효율적

 

2) 슬라이딩 윈도우 (sliding window)

윈도우 : 송수신단에서 만들어진 버퍼크기

수신단에서 설정한 윈도우 크기 만큼 송신단에서 확인 응답이 없어도 세그먼트 전송 가능 (연속적)

> 데이터 흐름 동적 조절

 

 

2. 오류제어 (ARQ : 정지-대기, GBn, SR)

ARQ (Auto Repeat Request) : 자동 반복 요청. 프레임 손상/손실 시 재전송 요청 (흐름제어와 연관성)

 

1) 정지-대기 ARQ

송신단에서 1개 프레임을 전송하면 수신단에서 ACK 혹은 NAK 전송 (에러 유무 응답)

  • ACK : 다음 프레임 전송
  • NAK : 손상된 프레임 번호 반환

 

데이터 프레임과 ACK 프레임은 0,1 번호를 번갈아 부여하여 구분

NAK응답/ 데이터, ACK 분실 시 타임아웃 > 재전송 

 

2) Go-Back-n ARQ

프레임 손상/분실, ACK 손실로 인한 타임아웃 시 확인된 마지막 프레임 이후 모든 프레임 재전송

송신단은 전송한 프레임의 복사본을 가짐 (ACK, NAK 구분)

수신단은 NAK 이후 수신 데이터는 폐기하고 재전송 받는다

 

GBn ARQ에서 데이터 프레임 손실된 경우
GBn ARQ에서 데이터 프레임 분실된 경우

 

 

3) SR ARQ (Selective-Reject ARQ)

손상/손실된 프레임만 재전송 (GBn ARQ의 모든 프레임을 재전송하는 단점 보완)

별도의 데이터 재정렬, 버퍼 필요 : 수신단에 버퍼를 두어 수신데이터 정렬 (비용증가)

 

 

 

3. 혼잡제어 (AIMD, Slow Start)

하나의 라우터에 데이터가 몰려 모든 데이터 처리가 어려울 때 > 호스트들 재전송 > 혼잡가중 > 오버플로우/데이터 손실 발생 가능

네트워크 혼잡을 피하기위해 송신단의 데이터 전송/처리속도를 제어하는 기법

 

1) AIMD (Additive Increase Multicative Decrease)

합 증가 - 곱 감소 알고리즘

 

  • 패킷 1개 전송 > 전송한 패킷이 문제 없이 도착 > 윈도우 사이즈 +1 하며 전송
  • 전송 실패/타임아웃 > 윈도우 사이즈 절반 감소

나중에 진입 > 초기엔 불리하지만 결국엔 시간 흐르면 공평해짐

문제점 : 초기에 높은 대역폭 사용 못함 (처음에 전송속도 올리는데 많은 시간 소요), 네트워크 혼잡성 미리 감지 못함

 

 

2) Slow Start

AIMD 와 시작 같음 (시작 느림)

ACK마다 윈도우 사이즈 +1 > 한 주기 이후 윈도우 사이즈=2배 

혼잡 현상 발생했던 윈도우 사이즈 절반 까지는 지수 함수 꼴로 윈도우 증가, 이후 +1씩 증가

 

  • 혼잡 회피 : 윈도우 크기가 임계 값에 도달하면 데이터 손실 가능성 높음 > 회피하기 위해 윈도우 선형증가(+1) > 혼잡하면 윈도우 크기 세그먼트 후 1로 감소 + 임계값을 손실 발생했을 때의 윈도우 사이즈 절반으로 감소
  • 빠른 회복 : 혼잡상태 > 윈도우 사이즈 절반으로 감소 > 선형증가(+1)
  • 빠른 재전송 : 중복된 순번의 패킷 3개 수신 시 재전송, 윈도우 사이즈 절반으로 감소

 


Reference

 

TCP (흐름제어/혼잡제어/오류제어)

1. 패킷(Packet)이란? 인터넷에서 데이터를 보내기 위한 경로 배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각으로 나누어 전송을 하게 되는데, 이때의 조각을 이라고 한다. 쉽게 말

velog.io

 

반응형

'CS Interview > Network' 카테고리의 다른 글

HTTP & HTTPS / GET & POST (HTTP METHOD)  (0) 2021.05.06
[TCP] 연결, 해제, FLAG/ 3-way handshake, 4-way handshake  (0) 2021.05.04
TCP와 UDP  (0) 2021.05.04

프로세스 

실행중인 프로그램 

디스크로부터 메모리에 적재되어 CPU 할당을 받을 수 있는 것

OS로부터 주소공간, 파일, 메모리 등을 할당받음

 

  • 프로세스 스택 : 임시자료 (함수 매개변수, 복귀주소, 로컬변수)
  • 데이터 섹션 : 전역변수
  • 힙(heap) : 프로세스실행 중에 동적 할당되는 메모리

 

PCB

프로세스 제어 블록

특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조

OS는 프로세스 관리를 위해 프로세스 생성 시 동시에 고유 PCB를 생성함

CPU 할당받은 프로세스가 작업 처리 중에 프로세스 전환이 발생하면 진행작업을 PCB에 저장 후 CPU를 반환함

> 다시 CPU 할당 받으면 이전에 종료된 시점부터 작업 수행 가능

 

PCB 에 저장되는 정보

  • 프로세스 식별자(Process ID, PID) : 프로세스 식별번호
  • 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장
  • 프로그램 카운터 : 프로세스가 다음에 실행할 명령어의 주소
  • CPU 레지스터
  • CPU 스케쥴링 정보 : 프로세스의 우선순위, 스케줄 큐에 대한 포인터 등
  • 메모리 관리 정보 : 페이지 테이블 또는 세그먼트 테이블 등과 같은 정보를 포함
  • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치들과 열린 파일 목록
  • 어카운팅 정보 : 사용된 CPU 시간, 시간제한, 계정번호 등

 

 


스레드

프로세스의 실행단위 (흐름)

한 프로세스 내에서 동작하는 여러 흐름으로 프로세스 내의 공간/자원 공유가능

구성 : 스레드 ID, 레지스터 집합, 독립된 PC(program counter), 독립된 스택 (메모리공간)

같은 프로세스에 속한 다른 스레드와 코드, 데이터 섹션, 열린파일, 신호 등 OS 자원을 공유함

 

 

멀티 스레드

하나의 프로세스를 다수의 실행단위로 구분하여 자원을 공유 (하나의 프로그램에서 병렬 처리)

자원의 생성, 관리의 중복을 최소화하여 수행능력 향상 (메모리 공간, 시스템 자원소모 감소)

스레드 간의 통신 = 자원 이용 없이 전역변수의 공간/ 동적할당 공간(heap) 에서 통신가능

 

주의 : 동기화작업 필요 > 스레드 간 접근 가능하므로 엉뚱한 값 읽기/수정 가능 > 동기화로 작업처리 순서, 공유자원 접근 제어 > 과도한 동기화는 락발생 > 병목현상 주의

 

 

싱글스레드 프로세스와 다중스레드 프로세스


 

 

멀티 스레드 : 하나의 프로그램 병렬 처리. 적은 메모리공간 사용, 문맥전환 빠름, 오류로 하나의 스레드 종료 시 전체 스레드 종료 가능, 동기화 문제(병목현상) 

RPC 서버 (Remote Procedure Call 원격 프로시저 호출) : 서버가 메시지 수신 시 서비스를 위한 새로운 스레드 생성, 여러 요청을 병렬로 처리

 

멀티 프로세스 : fork(), 여러 프로그램 병렬 처리. 하나의 프로세스 종료 시 다른 프로세스에 영향없음, 많은 메모리공간, 많은 CPU시간 소요

 

 

멀티 태스킹 : OS에서 지원, TASK 번갈아 수행. 독립된 자원사용, 공유 X

 

멀티 프로그래밍 : 프로세서의 I/O작업 종료대기 중에 하나의 프로세서에서 다른 프로그램을 수행 (자원낭비 방지)

 

>>> 대상 시스템 특징에 따라 적합한 동작방식 선택/적용해야 함 

 


Reference

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

 

[운영체제] 4장 다중 스레드 프로그래밍(Multithreaded Programming)

4.1 개요(Overview) ▶ 스레드(threads) : CPU의 기본 단위, 스레드 ID, 프로그램 카운터, 레지스터 ...

blog.naver.com

 

 

[OS] 멀티프로세싱, 멀티프로그래밍, 멀티태스킹, 멀티스레딩

멀티 프로세싱은 다수의 프로세서가 서로 협력적으로 일을 처리하는 것을 의미한다. 컴퓨터는 1대인데 프로세서(CPU)는 2개 이상이다. 보통, 멀티코어시스템(multi-core system)을 포함한다.초기의 컴

velog.io

 

반응형

TCP의 연결, 데이터 전송, 해제 과정 한 눈에 보기

 

서버 : socket() 생성 → bind() 소켓 주소할당 → listen() 연결요청 대기상태 → accept() 연결허용 → read/write() 데이터 송수신 → close() 연결종료

클라이언트 : socket() 생성 → connect() 연결요청 → read/write() 데이터 송수신 → close() 연결종료

 

 

3-way handshake : TCP 연결

서버 listen() 상태 

1) 클라이언트 connect(), C->S 접속요청 패킷 SYN(M) 전송  

2) 서버 accept(), S->C 요청 수락 패킷 ACK(M+1), SYN(N) 전송 

3) 클라이언트 connect(), C->S 요청 수락 확인 패킷 ACK(N+1) 전송

연결 성립 (Established)

 

3-way handshake

 

4-way handshake : TCP 해제

Established 상태

1) C->S 연결 종료요청 FIN FLAG 전송

2) S->C 종료 수락 메시지 ACK 전송

   일시적 TIME_OUT (데이터를 모두 보낼 때 까지)

3) S->C 연결 종료 FIN FLAG 전송

4) C->S 확인 메시지 ACK 전송

서버 소켓 연결 close(), 클라이언트 일정 시간 동안 TIME_WAIT (잉여패킷 대기)

 

4-way handshake


TCP flag(URG, ACK, PSH, RST, SYN, FIN)

FLAG 순서  - | URG  | ACK | PSH | RST | SYN | FIN |

각각 1비트로 TCP 세그먼트 필드 안에 CONTROL BIT 또는 FLAG BIT 로 정의 되어 있다.

 

 

SYN(Synchronization:동기화) - S : 연결 요청 플래그

TCP 에서 세션을 성립할 때  가장먼저 보내는 패킷, 시퀀스 번호를 임의적으로 설정하여 세션을 연결하는 데에 사용되며 초기에 시퀀스 번호 (ISN) 를 보내게 된다.

 

시퀀스 랜덤인 이유
Connection시 사용하는 포트는 유한 범위 내 사용되고 시간이 지나면 재사용 됨
= 두 통신 호스트가 과거 사용된 포트 번호쌍을 사용할 가능성이 있음 
>>> SYN의 시퀀스가 순차적일 경우 서버에서는 SYN으로 패킷 구분하므로 이전 Connections에서 오는 패킷으로 인식 가능  

 

ACK(Acknowledgement) - Ack : 응답

상대로부터 패킷을 받았다는 걸 알려주는 패킷, 다른 플래그와 같이 출력되는 경우도 있음
수신자가 송신자 시퀀스 번호에 길이 또는 데이터 양을 더해 ACK를 전송 (일반적으로 +1)

ACK 응답을 통해 보낸 패킷에 대한 성공, 실패를 판단하여 재전송 하거나 다음 패킷을 전송

 

FIN(Finish) - F : 연결 종료 요청
세션 연결을 종료시킬 때 사용. 더이상 전송할 데이터가 없음을 나타냄

 

RST(Reset) - R : 연결 종료
재설정(Reset)을 하는 과정, 양방향에서 동시에 일어나는 중단 작업

비 정상적인 세션 연결 끊기. 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용

 

PSH(Push) - P : 밀어넣기

받은 데이터를 버퍼가 채워지기를 기다리지 않고 (버퍼링 없이) 즉시 목적지인 OSI 7 Layer 의 Application 계층으로 전송

TELNET 과 같은 상호작용, 빠른 응답이 중요한 프로토콜(대화형 프로토콜)에 사용

 

URG(Urgent) - U : 긴급 데이터
Urgent pointer가 유효한 것인지를 나타냄. 긴급 데이터로 다른 데이터에 비해 우선순위가 높아야 함 
(ex. ping 명령어 실행 도중 Ctrl+c 입력)

 

Placeholder             
패킷의 플래그에 SYN, FIN, RST, PSH등의 플래그가 설정 되어 있지 않은 경우 세팅됨

ACK플래그와 함께 사용되기도 함

 

 


Reference

 

[TCP] 3-way-handshake & 4-way-handshake

[TCP] 3-way-handshake & 4-way-handshake 연결 성립(Connection Establishment) 1) 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. 2) 서버는 클라이언트의 요청인 SYN(a)을 받고 클라이언트에게..

asfirstalways.tistory.com

 

 

TCP 통신 과정 및 비정상 종료(TCP 3,4-way handshake)

TCP Handshake 란? OSI 7계층 중 Network layer에 해당하는 프로토콜인 TCP는 장치들 사이에 논리적인 접속을 성립(establish)하기 위하여 3-way handshake를 사용하고 세션을 종료를 성립하기 위해 4-way handsh..

www.crocus.co.kr

 

 

gyoogle/tech-interview-for-developer

👶🏻 신입 개발자 전공 지식 & 기술 면접 백과사전 📖. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

 

반응형

Transport Layer (TCP vs UDP)

OSI 7계층의 하위 3계층과 상위 3계층의 인터페이스를 담당 (TCP/UDP : OSI 전송계층의 표준)

 

<물리계층 - 데이터링크계층 - 네트워크계층 - 전송계층 - 세션계층 - 표현계층 - 응용계층>

 


 

1. TCP (Transmission Control Protocol) - 전송제어 프로토콜

1) 전이중(full-duplex) 방식 : 전송 양방향으로 동시에 가능

2) 점대점(point to point)방식 : 각 연결이 2개의 종단점을 가지고 있음 

 

신뢰성 없는 인터넷을 통해 송수신 종단점(소켓) 간에 신뢰성있는 바이트 스트림 전송 

 

특징

연결형, 신뢰성(흐름제어, 오류제어), 순차성, 멀티캐스팅 지원 X, 브로드캐스팅 지원 X

 

  • 연결 : 3-way handshake
  • 해제 : 4-way handshake
  • 흐름제어 : 슬라이딩 윈도우
  • 오류제어 : 재전송

 

 

2. UDP (User Datagram Protocol) - 사용자 데이터그램 프로토콜

1) IP 데이터그램 캡슐화하여 전송

2) 연결 설정 없이 전송

3) 짧은 요청, 응답에 용이

 

포트들을 사용해 IP 프로토콜에 인터페이스 제공

클라이언트-서버 상황에 유용 (단일/다중 목적지로 전송 가능)

 

● DNS : 사전설정, 해제 필요 없음

1) 어떤 hostname의 IP주소를 찾을 때, DNS 서버로 hostname이 포함된 UDP패킷 전송

2) DNS 서버는 hostname이 포함된 UDP 패킷으로 응답 

 

● 실시간 멀티미디어 

RTP (Real time Transport Protocol) : UDP 패킷의 단일 스트림으로 몇몇 실시간 데이터 스트림을 멀티플렉싱

패킷에 번호를 부여하여 분실 패킷 추적 가능 

 

특징

비연결형, 신뢰성 X(흐름/오류제어 없음), 순차전달 X

 


Reference

 

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

 

 

[TCP] 3-way-handshake & 4-way-handshake

[TCP] 3-way-handshake & 4-way-handshake 연결 성립(Connection Establishment) 1) 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보낸다. 2) 서버는 클라이언트의 요청인 SYN(a)을 받고 클라이언트에게..

asfirstalways.tistory.com

 

반응형

RESTful (REpresentational State Transfer)

자원을 정의하고 자원에 대한 주소 지정 방법 전반에 대한 패턴

분산 하이퍼미디어 시스템 (ex. WWW)을 위한 소프트웨어 아키텍처의 한 형식

리소스 : URI-Uniform Resource Identifiers (명사)

메소드 : HTTP Method (GET : 조회/ POST : 생성/ PUT : 기존 entity 전체수정/ PATCH : 일부수정/ DELETE : 삭제)

메시지: Header, Body 명확히 분리해서 사용

Header : API 버전정보(서버의 컨트롤정보), MIME 타입(응답받고자 하는 타입)

Entity : body에 작성

브라우저와 서버의 형식 통일 (ex. form-data, json ...)


장점 : Open API 제공 용이/ 멀티플랫폼 지원, 연동 용이/ 데이터를 원하는 타입으로 주고받을 수 있음

단점 : 메소드 4종류만 가능/ 분산환경에 부적합/ HTTP 통신모델만 지원


TDD (Test-Driven Development)

매우 짧은 개발 사이클 반복에 의존하는 SW개발 프로세스

개발자는 요구되는 기능에 대한 자동화된 TC작성 > 해당 테스트를 통과하는 가장 간단한 코드를 작성 (리팩토링 반복)

개발자는 해당 기능의 요구사항, 명세를 분명히 이해해야 함

장점 : 요구사항에 집중

단점 : 테스트에 대한 사전 학습 필요, 100% 무결성 보장 안됨


함수형 프로그래밍

immutable : 가지고 있는 값을 변경할 수 없는 객체, 값 변경 시 새로운 객체 생성, 변경된 값 주입하여 반환

mutable : 값을 변경 가능한 객체

Reactive Programming : 반응형, 선언형 프로그래밍. 함수형 프로그래밍 활용. 모든 것을 stream으로 봄

↔ 명령형 프로그래밍 (Imperative Programming)

stream : 값들의 집합. 함수형 메소드를 통해 immutable하게 관리


MVC (Model, View, Controller)

Controller

클라이언트 요청 받을 시, 실제 업무 수행하는 Model 호출 / 클라이언트가 데이터 전송 시 데이터 가공 후 Model에 전달

Model의 작업이 끝나면 결과를 View에 전달

Model

Controller가 호출 시, 역할 수행

비즈니스 로직 구현 영역. 응용 프로그램에서 데이터를 처리하는 부분 (DB에 연결, 데이터 추출, 저장, 삭제 ,업데이트, 변환 작업 수행)

상태 변화가 있을 시 Controller, View에 통보 > 후속조치 명령 받음

View

Controller에게 받은 Model의 결과를 사용자에게 출력할 화면을 만듦

만든 화면을 웹브라우저에 전송, 웹브라우저가 출력 (추출한 데이터/ 텍스트/ 입력폼/ 인터페이스 등)

출처&amp;amp;amp;nbsp;https://asfirstalways.tistory.com/180


Reference

JaeYeopHan/Interview_Question_for_Beginner

:boy: :girl: Technical-Interview guidelines written for those who started studying programming. I wish you all the best. :space_invader: - JaeYeopHan/Interview_Question_for_Beginner

github.com

::Devlog::

모두가 개발을 아는 그 날까지

asfirstalways.tistory.com

반응형

'CS Interview > etc' 카테고리의 다른 글

마이크로 서비스란 (MSA) - 모놀리식 아키텍처, API Gateway vs ESB  (0) 2021.06.16
REST API 특징과 보안  (0) 2021.06.15
[IBM API connect] 특징  (2) 2021.05.11
JavaScript  (0) 2021.05.06
React & Vue  (0) 2021.05.06

+ Recent posts