데이터베이스 (Database) 데이터베이스는 일정한 규칙 혹은 규약을 통해 구조화되어 저장되어 있는 데이터들의 모음입니다. DBMS DBMS(Database Management System)는 데이터베이스를 관리하는 시스템으로 여러 사용자가 데이터베이스에 접근하고 사용할 수 있도록 해주는 프로그램입니다. 데이터베이스를 사용하는 이유 데이터베이스를 사용하기 전에는 파일 시스템을 사용하여 데이터를 관리했습니다. 데이터베이스는 데이터의 중복, 검색 등의 문제를 해결하기 위해서 사용하게 되었습니다. 데이터를 통합해 관리하는 데이터베이스는 중복성을 최소화할 수 있기에 파일 시스템의 단점을 보완해줍니다. 데이터베이스의 특징 1. 데이터의 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데..
로드 밸런싱 요즘 시대에는 웹사이트에 접속하는 인원이 급격하게 늘었기 때문에 모든 트래픽을 감당하기엔 1대의 서버로는 부족합니다. 대응 방안으로 하드웨어의 성능을 올리는 것(Scale-up)과 여러 대의 서버가 나눠서 일하도록 만드는 것(Scale-out)이 있습니다. 하드웨어 향상 비용이 더욱 비싸기도 하고, 서버가 여러 대 존재하면 무중단 서비스를 제공하는 환경 구성이 용이하므로 Scale-out이 효과적입니다. 이때, 여러 서버에게 균등하게 트래픽을 분산시켜주는 것이 바로 로드 밸런싱입니다. 로드 밸런싱은 분산식 웹 서비스로, 여러 서버에 부하(Load)를 나누어주는 역할을 합니다. 로드 밸런서를 클라이언트와 서버 사이에 두고, 부하가 일어나지 않도록 여러 서버에 분산시켜주는 방식입니다. 서비스를 ..
IP 주소 IP 주소는 많은 컴퓨터들이 인터넷 상에서 서로를 인식하기 위해 지정받은 식별용 번호입니다. 현재는 IPv4 버전(32비트)으로 구성되어 있으며, '127.0.0.1' 같은 주소를 말합니다. 시간이 갈수록 IPv4 주소의 부족으로 IPv6가 생겼는데, 128비트로 구성되어 있기 때문에 IP 주소가 부족하지 않다는 특징이 있습니다. 도메인 네임 (Domain Name) IP 주소는 12자리의 숫자로 되어 있기 때문에 사람이 외우기 힘들다는 단점이 있습니다. 그렇기 때문에 12자리의 IP 주소를 문자로 표현한 주소를 도메인 네임이라고 합니다. 도메인 네임은 'naver.com'처럼 몇 개의 의미있는 문자들과 점(.)의 조합으로 구성된다. 도메인 네임은 사람의 편의성을 위해 만든 주소이므로 실제로는..
Clean Architecture (클린 아키텍처) 클린 아키텍처는 계층을 크게 나누어서 각 분리된 클래스가 한 가지 역할만 수행하도록 구현하는 방식입니다. 계층 구조를 보면, 외부에서 내부로 의존성을 가지고 있기 때문에 내부로 갈수록 의존성을 낮아지게 됩니다. 즉, 어떠한 동작을 할 때 자기보다 내부에 있는 계층이 변화하면 동작을 행하는 계층에도 영향이 있을 수도 있지만, 자신의 외부에 있는 계층이 변화하는 것 때문에 동작을 행하는 계층에 영향이 있어서는 안 됩니다. 쉽게 패키지 구조 탐색이 가능해집니다. 프로젝트의 유지 보수가 편리해집니다. 새로운 기능을 추가할 때, 안정적으로 빠르게 적용이 가능합니다. 테스트가 용이합니다. Clean Architecture는 모바일 개발을 어떻게 도와주는가? - (..
HTTP (Hyper-Text Transfer Protocol)HTTP는 클라이언트와 서버가 데이터를 주고받기 위한 프로토콜입니다.인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있습니다.애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다.비연결 지향 브라우저를 통해 사용자의 요청으로 서버와 접속하여 요청에 대한 응답의 데이터를 전송한 후 연결을 종료합니다. 과정이 간단하기 때문에 자원이 적게 든다는 장점이 있습니다.하지만 여러 사용자가 요청할 시 각각의 사용자 요청을 구분할 수 없어서 제대로 된 응답 데이터를 전송할 수 없다는 단점이 있습니다. 해결 방법으로는 쿠키, 세션, 히든 폼 필드 등이 있습니다. 단방향성 사용자의 요청 한 개에 대해 한 개의 응답을 하는 ..
대칭키 (Symmetric Key) 대칭키 암호화 방식은 암호화와 복호화에 같은 암호키를 사용하는 알고리즘입니다. 하나의 키를 클라이언트와 서버 양쪽이 같이 사용합니다. 공개키 암호화 방식에 비해 암호화 및 복호화 속도가 빠르고 비교적 간편합니다. 암호화 통신을 하는 사용자끼리 같은 암호키를 공유해야만 하기 때문에 보안에 매우 취약할 수 있습니다. 여러 사용자들과 각각 암호화 통신을 하기 위해서는 암호키가 여러 개 필요하기 때문에 관리해야 할 키의 개수가 방대해질 수 있습니다. 대표 알고리즘 : DES, 3DES, AES, SEED, ARIA 등 대칭키 암호화 시나리오 1. A는 사전에 공유된 대칭키로 데이터를 암호화하여 B에게 전송합니다. 2. B는 같은 대칭키로 데이터를 복호화합니다. 공개키 (Pub..
3-Way Handshake 3-Way Handshake는 TCP/IP 프로토콜을 이용하여 통신을 진행할 때, 두 종단 간 정확한 데이터 전송을 보장하기 위해 연결을 설정하는 과정입니다. 클라이언트는 서버에 접속을 요청하는 SYN(a) 패킷을 보냅니다. 서버는 클라이언트의 요청인 SYN(a) 패킷에 대한 요청 수락 응답으로 ACK(a+1) 패킷을 보냅니다. 또한, 클라이언트도 포트를 열어달라는 SYN(b) 패킷을 보냅니다. 클라이언트는 ACK(a+1) 패킷과 SYN(b) 패킷을 받고 이에 대한 응답으로 ACK(b+1) 패킷을 보내며 연결이 성립됩니다. 왜 2 way가 아니라 3 way일까? TCP는 양방향성 연결이기 때문에 클라이언트에서 서버에게 자신의 존재를 알리고 패킷을 보낼 수 있는 것처럼 서버에서..