목록분류 전체보기 (25)
장미정원

들어가며동기, 비동기, 블로킹, 논블로킹이라는 용어는 한 번쯤 들어봤거나 개념에 대해 조금은 알고 있을 것이라 생각됩니다. 순서대로 처리하는 것이 동기.. 그 반대가 비동기.. 작업 흐름이 끊기는 것이 블로킹.. 제어권.. 이렇게 머리속에 키워드만 생각나고 정확한 정의가 헷갈리며 개발을 할때 자주 등장하는 개념과 용어이기 때문에 정확히 정리해보는 시간을 가지려 합니다. 동기와 비동기 Synchronous, Asynchronous동기의 영단어의 어원은 Synchronous의 Syn은 '함께', chrono는 '시간'이라는 뜻입니다. 즉 함께 시간을 맞춰서 실행한다. 정도로 해석할 수 있습니다. 함께 시간을 맞춰서 실행한다는 말은 요청한 작업이 끝나야 남은 작업을 이어나간다라고 생각할 수 있습니다. 즉 작업..

들어가며네트워크에서 가장 유명하고 중요한 프로토콜 중 하나인 TCP, IP 프로토콜 통신에 대한 정리를 간단하게 해보려고 합니다. 내 컴퓨터에서 다른 컴퓨터로 데이터를 전송할 때 네트워크 상에서는 어떤 일 들이 일어나고 있는지 간단한 구조를 설명해보겠습니다. 본 내용은 널널한 개발자님의 네트워크 강의를 많이 참고하였습니다! 네트워크?시작하기 앞서 네트워크라는 단어의 개념에 대해 정리하고 넘어가도록 하겠습니다. 네트워크는 수 많은 노드들이 그물망처럼 연결되어 서로 상호작용하는 논리적인 집합체라고 생각할 수 있습니다. 여기서 노드는 컴퓨터라고 생각하면 편합니다. OSI 7계층과 간단한 데이터 전송 네트워크를 한 번이라도 공부 해본적이 있다면 OSI 7계층에 대해 들어봤을겁니다. 만약 내 컴퓨터에서 다른 컴퓨..

트랜잭션데이터베이스에서의 트랜잭션이란 데이터베이스에서 데이터의 상태를 변경하기 위해 수행하는 작업들의 논리적인 최소한의 단위입니다. 쉽게 말해 하나의 작업에 대해 한꺼번에 실행되어야 하는 일련의 작업들의 모음이라고 생각할 수 있습니다. 트랜잭션을 쉽게 설명하기 위한 좋은 예가 하나 있는데요, 바로 계좌이체입니다. 계좌이체라는 작업은 돈을 송금한 측의 계좌에서 돈을 차감, 송금 받을 측의 계좌에 돈을 추가해야합니다. 만약 계좌이체라는 작업 중에 송금 하는 측의 돈을 차감 후 송금 받는 측의 돈을 추가하려 할 때 오류가 발생해서 작업이 중지되었다면... 송금 하는 측의 돈만 차감되는 심각한 장애로 이어지게 됩니다. 이렇듯 계좌이체라는 작업은 돈의 차감, 추가라는 일련의 작업들이 마치 하나의 작업처럼 이루어져..

JPAJava Persistence API, JPA는 자바 진영의 ORM 표준 API(인터페이스) 입니다. RDB와 객체 간의 매핑을 지원해주는 ORM 기술의 자바 표준의 API로 대표적인 구현체로는 Hibernate입니다. ORMObject-Relational Mapping, ORM은 뜻 그대로 객체와 RDB 테이블을 매핑해주는 기술입니다. 덕분에 SQL 중심적으로 개발하는 방식에서 객체 중심적으로 개발을 할 수 있도록 패러다임 불일치를 해결해줍니다. JPA를 사용하는 이유JPA 기술을 사용한다면 직접 SQL문을 작성하지 않고 객체의 메서드로 DB를 조작할 수 있어 객체지향적으로 개발할 수 있습니다. DB의 종류를 변경해도 각 DB에 맞는 쿼리를 다시 짜야할 필요가 없는 장점이 있습니다. 반복적인 CR..

MSAMicroService Architecture, 마이크로서비스 아키텍처는 작고, 독립적인 각각의 서비스들이 모여 하나의 애플리케이션을 이루는 아키텍처를 의미합니다. 마이크로서비스 아키텍처는 모놀리식 아키텍처와 대비되는데요, 기존에 개발하던 애플리케이션 아키텍처 방식이 모놀리식이라고 볼 수 있습니다. 모놀리식 아키텍터와 MSA모놀리식 아키텍처전통적인 시스템 구조인 모놀리식 아키텍처 구조는 하나의 애플리케이션에 모든 비즈니스 서비스를 개발하는 방식입니다. 모놀리식 아키텍처 애플리케이션은 하나의 단일체로서 아무리 작은 변화가 발생해도 애플리케이션 전체를 빌드하고 배포해야합니다. 모놀리식 아키텍처는 소규모 프로젝트나 일반적인 프로젝트에서는 합리적인 선택입니다. 하지만 모놀리식 아키텍처는 대규모 서비스, ..

인덱스인덱스는 데이터베이스 튜플의 검색 속도 향상을 위한 자료구조입니다.인덱스는 우리 생활에서도 정말 많은 부분에서 사용됩니다. 만약 책의 원하는 부분을 찾기 위해 책의 첫 페이지부터 모든 페이지를 한 장씩 찾는다면 굉장히 오랜 시간이 소요됩니다. 하지만 책의 맨 앞에 있는 목차(인덱스)를 확인하면 원하는 부분을 쉽고 빠르게 찾을 수 있습니다. 인덱스를 사용하지 않는 컬럼으로 조회를 진행한다면 테이블 전체를 Full Scan 해야 하기 때문에 굉장히 오랜 시간이 소요됩니다. 하지만 인덱스를 사용하는 컬럼으로 조회를 한다면 테이블 전체를 Full Scan 하지 않고 인덱스라는 자료구조를 통해 조건에 맞는 데이터를 찾게 됩니다. 그 후 조건에 맞는 데이터를 찾았다면 해당 데이터의 주소값으로 바로 해당 튜플..

AOPAOP(Aspect Oriented Programming), 관점지향프로그래밍은 핵심기능과 부과기능을 구분하여 반복적으로 사용되는 기능을 모듈화하여 공통 관심사로 분리하여 프로그래밍하는 것입니다. AOP를 구현하면 공통 기능이 추가되었을 대 핵심기능에 코드를 수정하지 않으면서 공통기능에 대한 구현을 추가하는 것입니다. 위와 같이 주문 관련 기능이 있다고 가정해보겠습니다. 여기서 각각의 핵심 기능인 주문받기, 주문정보조회 전, 후에 로그를 남겨야 한다면 각각의 핵심 기능 코드에 직접 로그를 출력하는 코드를 작성해야합니다. 이렇게 된다면 중복되는 코드가 많아지고 직접 핵심 기능의 코드를 수정해야하기 때문에 유지보수가 힘들어집니다. 여기서 AOP의 개념을 적용시킨다면, 핵심기능과 부과기능의 관점을 분..

프로세스프로세스는 실행 중인 프로그램을 의미합니다. 컴퓨터에 있는 여러 프로그램들은 보조기억장치에 저장되어 있다가 프로그램을 실행하는 순간 메모리에 적재되고 프로그램은 프로세스가 됩니다. 프로세스는 실행될때 CPU의 자원을 필요로 합니다. 컴퓨터에는 여러 개의 프로세스들이 실행될 수 있습니다. 하지만 모든 프로세스가 CPU의 자원을 동시에 사용할 수는 없으므로 각자 차례를 기다리며 한정된 시간만큼만 CPU 자원을 사용하고 돌려주는 것을 반복하여 동작합니다. 이러한 프로세스의 실행 순서를 관리하고 프로세스에 지원을 배분하는 일은 운영체제가 담당하는데 이를 위한 운영체제는 PCB를 이용합니다. PCB - Process Control Block프로세스 제어 블록은 프로세스의 정보를 저장하는 자료구조입니다. 메..