CS (20) 썸네일형 리스트형 Socket 간단 정리 Socket"소켓은 간단하게 말하자면 서로 다른 기기의 프로세스 사이에서 네트워크 교환을 위한 인터페이스" 이다. Transport, Internet, Link계층은 OS 레벨에서 구현/관리되어 Application 이 네트워크 기능을 사용할 수 있도록 지원한다.이를 지원하기 위한 인터페이스를 소켓이라고 하며, 실제 실제 운영체제에서 제공하는 네트워크 관련 시스템콜들의 집합을 Sockets API 라한다. 따라서 Socket 은 Application Layer와 Transport Layer 사이에서 네트워크 통신을 위한 통로이다. TCP 프로토콜을 사용하는 Socket : SOCK_STREAMUDP 프로토콜을 사용하는 Socket : SOCK_DGRAM 이라 한다. Socket 의 동작 과정 1. 우.. [응용 계층] DNS 정리 DNS (Domain Name Service / Server)DNS 역시 응용 계층의 대표적인 프로토콜이다.네트워크 통신을 위해 IP 주소와 포트 번호를 사용하는데,IP 주소의 형태는 172.158.192.123 로 총 2^32 개의 주소를 갖을 수 있다. (IPV4 기준) IP는 사람이 이해하기 어려운 형태이기 때문에 나온 것이 Domain Name 이다.DNS 는 전화번호부 처럼 Domain Name 을 IP 로 매핑 해준다. DNS 는 전세계 사람들이 사용해야 하기 때문에 성능과 안전을 위해 서비스를 분산 시켜놓고 계층화 시켜 놓았다. DNS 계층 구조Root DNS Server : 제일 상위에 존재하며 내용을 카피한 13군데 존재한다.Top-Level Domain (TLD) Server : [.c.. [응용 계층] HTTP 와 Web Cache (Proxy Server) HTTP (HyperText Transfer Protocol)HTTP 는 응용 계층의 대표적인 프로토콜이다.HyperText Transfer Protocol 의 약자로 웹 상에서 데이터를 주고 받기위해 만들어졌다. 특히 웹 브라우저와 서버 사이의 HTML 문서 및 관련 자료를 주로 전송에 사용되며 HTML 문서 만이 아닌 IMAGE, 음성, 영상, 파일, JSON 등 거의 모든 형태의 데이터 전송이 가능히다. HTTP의 특징Client - Server 구조클라이언트는 서버에 요청을 보내고 서버는 요청에 대한 응답을 만들어 클라이언트에게 보내는 구조이다.무상태 프로토콜 (Stateless)서버가 클라이언트의 상태를 유지하지 않는다. 그렇기 때문에 서버를 자유롭게 확장 가능하다. (스케일 아웃)비연결성 (.. OSI 7계층과 TCP/IP 4계층 간단 요약 OSI 7 계층OSI 7 계층은 네트워크에 통신이 일어나는 과정을 7단계로 나눈 것을 말한다. 과정을 7단계로 나눔으로써 통신 과정을 단계적으로 파악할 수 있다. 어떤 문제가 생겼을 경우 다른 계층을 건들이지 않고 문제가 발생한 계층만 접근하여 문제를 해결할 수 있다. L7 | 응용 계층 (Application Layer)사용자와 바로 연결되어 응용 서비스를 수행하는 계층이다.구글 검색이나 카카오톡, 네이버 등 응용 프로그램들이 여기에 속한다.대표적인 프로토콜 : HTTP, DNS, Telnet, FTPL6 | 표현 계층 (Presentation Layer)응용 계층에 올라갈 데이터를 표현하는 계층이다.하위 계층에서 오는 데이터를 사용자가 이해할 수 있는 형태로 만든다이 계층에서는 데이터의 인코딩, 디.. 네이티브 앱 vs 웹앱 vs 하이브리드 앱 vs PWA 네이티브 앱 (NativeApp) 네이티브 앱은 특정 플랫폼 (Android, iOS) 에 최적화된 프로그래밍 언어와 도구를 사용하여 개발된 애플리케이션이다. 플랫폼의 특성과 하드웨어를 직접적으로 활용할 수 있다. 예를 들면, iOS 앱은 Swift, Object-C 로 개발되고 Android 앱은 Java, Kotlin으로 개발된다. 장점 플랫폼에 최적화되어 성능과 안정성이 뛰어나다. 모든 하드웨어 및 소프트웨어 기능에 접근 가능하여 다양한 기능을 구현할 수 있다. 네이티브 UI 컴포넌트를 사용하여 뛰어난 사용자 경험을 제공한다. 단점 플랫폼 마다 별도로 개발해야 하기 때문에 개발 비용과 시간이 많이 소요될 수 있다. 웹 앱 (Web App) 웹 앱은 웹 기술 (HTML, CSS, JavaScript).. 개발 방법론 정리 TDD(Test Driven Development) 란? TDD 란 소프트웨어 개발 방법론 중 하나로 간단하게 말하자면 테스트 케이스를 먼저 작성하고 그 테스트 케이스를 통과시키기 위한 코드를 작성하는 방법이다. TDD 는 다음과 같은 단계로 진행된다. 우선 실패하는 테스트를 작성한다. (RED) 먼저 개발하려는 기능에 대한 테스트 케이스를 작성합니다. 이는 기능이 예상대로 작동하는지 검증하기 위해 사용된다. 기능 구현이 안된 상태이기 때문에 테스트는 실패한다. 코드 작성 (GREEN) 빠르게 테스트를 통과시키기 위한 최소한의 코드를 작성한다. 이 과정에서 목표는 테스트 케이스를 통과시키는 것뿐만 아니라 , 코드를 빠르게 작성하는 것이다. 리팩토링 (REFACTOR) 빠르게 작성한 코드에서 중복을 제거하.. 동기와 비동기, 블로킹과 논블로킹 정리 동기와 비동기 간단하게 정리하면 동기는 프로세스를 순차적으로 수행하는 것, 비동기는 프로세스를 순차적으로 수행하지 않는 것이다. 동기 처리 동기는 작업 사이에 순서가 있어 항상 앞에 작업이 끝나야 다음 작업을 수행하는 것이다. 예를들면 식당에서 음식을 주문한 후 해당 주문에 대한 음식을 조리하고 손님에게 서빙한다. 손님이 주문 하지 않았는데 음식을 조리하고 손님에게 서빙하진 않는다. 동기식 처리는 이 처럼 작업 사이에 순서가 있어 항상 앞의 작업이 끝난 후 다음 작업을 처리한다. 비동기 처리 비동기는 작업 사이에 순서가 중요하지 않아 앞의 작업이 끝나지 않아도 다음 작업을 수행할 수 있다. 예를들면 우리가 온라인 쇼핑몰에서 옷을 주문할 때 먼저 주문한 옷이 다 배송이 끝나고 다음 옷의 배송이 시작되지 않.. 트랜잭션 특징과 격리 수준 트랜잭션 트랜잭션(Transaction) 은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위이다. [트랜잭션이 필요한 예시] A 가 B 에게 계좌이치를 하는 상황을 생각해보자. 1. A 의 계좌에서 돈을 꺼낸다. 2. B 의 계좌에 돈을 넣는다. 위의 두 작업은 함께 이루어지거나 혹은 둘 다 이루어지면 안된다. 만약 A 계좌에서 돈을 꺼냈는데 시스템상 오류로 B 계좌에 돈이 들어오지 않는다는 큰 문제가 생겨서는 안된다. 이를 위해 트랜잭션은 Commit 과 Rollback 을 지원한다. commit : 모든 부분 작업이 정상적으로 완료되면 이 변경사항을 한번에 DB에 반영한다. rollback : 부분 작업에 실패하면 모든 부분 작업을 실행 전 상태로 되돌린다. 트랜잭션 .. 데이터베이스 튜닝과 확장 데이터베이스 튜닝 데이터베이스 튜닝은 시스템의 성능을 최적화하고 자원을 효율적으로 사용하기 위해 데이터베이스 관리 시스템 (DBMS) 의 설정을 조정하는 과정이다. 데이터베이스 튜닝은 크게 서버 튜닝, SQL 튜닝, 스키마 튜닝 등 으로 나눌 수 있다. SQL 튜닝 데이터 검색, 삽입, 갱신, 삭제 작업의 효율을 높이기 위해 SQL 쿼리를 최적화하는 방법이다. 1. 필요한 필드만 선택해서 가져온다. -- 나쁜 예: 모든 필드를 선택 SELECT * FROM employees WHERE department_id = 10; -- 좋은 예: 필요한 필드만 선택 SELECT employee_id, first_name, last_name FROM employees WHERE department_id = 10; 2.. 데이터베이스 인덱스 인덱스 (Index) 인덱스란 데이터베이스 테이블에 대한 검색 성능의 속도를 향상시키기 위해 사용하는 자료구조이다. 마치 책에서 특정 부분을 찾을 때 목차를 활용하는 것과 비슷한 원리로 동작한다. 책에서 원하는 부분을 찾아 읽을 때, 처음부터 순서대로 읽는 것은 많은 시간이 걸릴 것이다. 그래서 목차를 확인하고 원하는 부분으로 직행하는 것이 더 빠르다. "인덱스"가 이런 방식으로 작동한다. 위 이미지는 PK 에 대한 인덱스를 생성한 모습이다. 인덱스는 Key 와 Pointer 쌍으로 구성된다. Key : 검색하려는 데이터의 값 Pointer : 실제 데이터 레코드를 가리키는 포인터 그림에서 보듯이 인덱스 엔트리는 모든 레코드에 대해 생성되는 것이 아닌, 일정한 크기의 블록 단위로 생성된다. 그렇기 때문에.. 이전 1 2 다음