블록 다이어그램이란? 수치 혹은 물리적인 자료와 그 흐름을 보다 명료하게 이해하기 위해 매 과정을 체계적으로 구역을 나눈 후, 이를 그림(블록, 선, 화살표)으로 나타냅니다. 크게 공학 및 전산 부분에서 쓰이는 블록 다이어그램과 지구과학/지질 분야에서 쓰이는 블록 다이어그램으로 나뉩니다. 블록 다이어그램 구성 요소는 일반적으로 순서도의 구성 요소를 기반으로 활용합니다. 활용 분야에 따라 순서도의 도형을 조합하여 구성 요소를 만들어서 활용하면 됩니다. 아래는 제어공학에서 블록 다이어그램을 작성하는데 필요한 구성요소의 예시입니다. 제어 공학에서는 전달 요소, 전달 함수, 화살표, 가산점 및 인출점을 활용하여 블록 다이어그램을 작성합니다. 참고: 순서도, 블록다이어그램, ER다이어그램의 차이점, 뭐가 다를까?..
세션 기반의 인증과, 토큰 기반의 인증 방법 1. 인증, 인가 란? 웹 서비스를 개발하다보면 사용자 인증과 권한 처리 로직에 대한 고민을 하게됩니다. 사용자 인증(Authentication)은 사용자가 자신이 주장하는 신원을 증명하는 과정이며, 권한 처리(Authorization)는 인증된 사용자에 대해 허용된 작업 및 기능에 대한 권한을 부여하는 과정으로 인가 라고도 표현합니다. 인증은 식별 가능한 정보를 이용하여 서비스에 등록된 유저인지를 파악하기 위한 과정으로 일반적으로 사용자 이름과 비밀번호를 입력하여 이루어집니다. 인증 후에는 권한 부여가 이루어져야 합니다. 인증된 사용자가 접근하려는 자원에 대한 권한이 있는지 확인하는 과정으로 권한은 일반적으로 역할(Role)이나 권한(Permission)의 ..
메모리의 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 합니다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요합니다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하고 있습니다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간은 다음과 같습니다. 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 다음 그림은 운영체제가 제공하는 메모리 공간을 표현하고 있습니다. 연관된 글: 참고: [OS] 메모리 구조 (Memory Structure) - code, data, stack, heap [컴퓨터 기초] 메모리구조(Memory Structure) 메모리의 구조
slf4j Simple Logging Facade for Java Logback, Log4j2와 같은 Logging Framework의 추상화 역할을 합니다. 추상화 로깅 라이브러리이기 때문에 단독으로는 사용할 수 없고 배포 시에 개발자가 로깅 프레임워크를 선택해서 연결해줘야 사용할 수 있습니다. 대부분의 자바 로깅 모듈은 slf4j의 브릿지를 이미 제공해주고 있어서 slf4j와 다른 프레임워크를 연결하기 위해 추가로 구현 작업이 필요없습니다. 이미 만들어진 API를 찾아 그냥 넣어 주기만 하면 됩니다. logback을 쓰고 싶으면 slf4j-api를, log4j2를 쓰고 싶다면 log4j-slf4j-impl과 log4j-api를 추가하면 됩니다. 즉 slf4j를 사용함으로써 하나의 라이브러리에 종속적일..
싱글톤 패턴은 객체지향 디자인 패턴에서 가장 유명한 패턴 중 하나로, 디자인 패턴을 따로 공부하지 않으신 분들도 익히 알고 있는 패턴입니다. 싱글톤은 생성 패턴(Creational Pattern) 중 하나이다. 생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴입니다. 생성 패턴에 속하는 패턴들은 객체를 생성, 합성하는 방법이나 객체의 표현 방법을 시스템과 분리해줍니다. 생성 패턴은 시스템이 상속(inheritance) 보다 복합(composite) 방법을 사용하는 방향으로 진화되어 가면서 더 중요해지고 있습니다. 생성 패턴에서는 중요한 이슈가 두 가지 있습니다. 생성 패턴은 시스템이 어떤 Concrete Class를 사용하는지에 대한 정보를 캡슐화합니다. 생성 패턴은 이들 클래스의 인스턴스들이 어떻게..
REST API 란 REST( Representational State Transfer )의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미합니다. RESTFUL 이란 REST 의 원리를 따르는 시스템을 의미합니다. 하지만 REST 를 사용했다 하여 모두가 RESTFUL 한 것은 아닙니다. REST API 의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 위한 것인지를 그 요청의 모습 자체로 추론이 가능한 것 입니다. URI 는 정보의 자원만 표현해야 하며, 자원의 행위는 HTTP Method 에 명시한다는 것입니다. REST란 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GE..
객체지향 소프트웨어를 '잘' 설계한다는 것은 쉬운 일이 아닙니다.게다가, 재사용할 수 있는 객체지향 소프트웨어를 만드는 것은 더 힘듭니다.설계를 할 때에는 지금 당장 갖고 있는 문제를 해결할 수 있어야 하지만, 나중에 생길 수 있는 문제나 추가된 요구 사항들도 수용할 수 있도록 일반적이고 포괄적이어야 합니다.이를 위해 설계할 때 고려사항으로 SOLID 원칙 등 객체지향적 소프트웨어 설계 방법론이 있고, 현업에서는 이에 따라 개발하기 위해 노력하고 있습니다. 개발의 경험이 쌓이다 보면 자신들이 전에 사용했던 코드와 유사한 기능을 구현해야 해서 이전의 코드를 들여다보는 경험을 종종 하게 됩니다. 그러다 전에 사용했던 해결책을 그대로 반복해서 사용하기도 하고, 변형해서 쓰기도 하고, 혹은 상황에 맞지 않다고 ..
소프트웨어 아키텍처의 정의 소프트웨어의 골격이 되는 기본구조. 건축학에서 건물의 구조를 건축학적으로 설계하듯 컴퓨터 공학에서는 소프트웨어의 구조(아키텍처)를 단계별로 설계하고 구축하게 됩니다. MSA 마이크로서비스란 작고 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크 MSA의 특징 따라서 ***SOA(Service Oriented Architecture)**의 특징을 다수 공통으로 가진다. 👉🏻 MSA는 API를 통해서만 상호작용할 수 있다. 즉, 마이크로 서비스는 서비스의 end-point(접근점)을 API 형태로 외부에 노출하고, 실질적인 세부 사항은 모두 추상화한다. 내부의 구현 로직, 아키텍처와 프로그래밍 언어, 데이터베이스, 품질 유지 체계와 같은 기술적인 사항들은 서..