목록전체 글 (100)
nathan_H
Message Queue MOM(Message Oriented Middleware)는 비동기 메시지를 사용하는 다른 응용 프로그램 사이에서 데이터 송 수신을 의미하는데, MOM를 구현한 시스템을 Message Queue라 한다. Message Queue는 프로그래밍에서 프로세스 또는 프로그램 인스턴스가 데이터를 교환할 때 사용하는 방법으로, 서비스에서 발생하는 데이터를 Message Queue로 별도의 작업을 연기 및 관리할 수 있기 때문에 SOA(Service-Oriented Architecture)의 개발에 도움을 준다. Message Queue 장점 비동기 MQ는 생산된 메시지를 저장 & 전송에 대해 동기화 처리를 진행하지 않고, Queue에 넣기 때문에 나중에 처리 가능하다. 여기서, 기존 동기화..
글쓰는 또라이가 세상을 바꾼다 글또라는 개발자 글쓰기 모임에 지난 기수 참여하면서 내가 작성한 글 이외에 다른 분들의 글을 보면서 동기부여와 내가 작성한 글에 대해 아쉬움이 많이 남아 이번에도 지원해 참여하게 되었다. (개인적으로 글 쓰는 또라이가 세상을 바꾼다는 워딩은 참 매력적이다.) 글또를 다시 하는 이유 지난 기수를 활동하면서, 이론적인 내용을 정리하는 것보단 정말 내가 이해한 내용으로 생각을 글로 담아내기가 절대 쉽지 않은 과정이라고 느꼈다. 그래서 몇 개의 글은 쓰고 지웠던 적도 있다. 그래서 이번 기수에는 이론적인 내용을 담아내는 것도 물론 좋지만, 이론적인 내용에서 더 발전해서 내가 실제 해당 내용을 적용하고 느낀 부분과 다양한 예시를 통해 글을 작성하는 것이 목표이다. 나만의 컨텐츠 지난..
Intro 어플리케이션 개발을 함에 있어, 데이터베이스는 필수적으로 사용하게 된다. 그리고 데이터베이스도 SQL, NoSQL 중 선택의 갈림길에 놓이게 된다. SQL & NoSQL의 각 특징을 파악하고, 어떤 상황과 용도로 사용하는 것이 적절한지 정리하고자 한다. SQL SQL(Structured Query Language)은 데이터베이스 자체를 나타내는 용어는 아니다, 특정 유형의 데이터베이스와 상호 작용하기 위한 쿼리 언어이다. 그래서 정확히 이야기 하면, RDMBS에서 사용되는 쿼리 언어라고 보면 되는데, 설명을 위해 SQL을 RDBMS 의미로 같이 사용할 예정이다. RDBMS (관계형 데이터베이스) 특징 엄격한 스키마 : 정해진 데이터 스키마(구조)에 따라 데이터베이스 테이블에 저장된다. 관계 :..
Intro 디비를 구성하고, 개발을 진행하다보면, 테이블 하나로 처리가 되는 경우가 매우 드물고 실제 비즈니스 로직에서는 다양한 테이블에 데이터를 합친 결과물을 전달해주는 경우가 많다. 이때 여러 릴레이션을 함께 사용할 때 사용하는 DB 연산을 JOIN이라고 하는데, JOIN의 종류와 어떻게 수행되는지 정리해보고자 한다. JOIN 릴레이션 하나로 원하는 데이터를 얻을 수 없어 관계가 있는 여러 릴레이션을 함께 사용해야 하는 경우 조인 연산을 수행. 조인 연산은 조인 속성을 이용해 두 릴레이션을 조합하여 "하나의 결과 릴레이션을 구성." 자연 조인 공통된 속성을 가진 것을 비교. 세타조인 세타 조인은 주어진 조인 조건을 만족하는 두 릴레이션의 모든 튜플을 연결한 새로운 튜플로 결과 릴레이션을 구성. (비교..
Intro 프로세스와 쓰레드가 먼지는 알지만, 막상 말로 설명하려면 제대로 못하는 경우가 많다. 아는 것과 이해한 것은 다르기 때문에 이번에 명확하게 "이해"하고자 프로세스와 쓰레드에 대해 정리하고자 한다. 들어가기 전에 프로그램 & 프로세스 & 쓰레드 각 용어에 대한 의미를 파악하고 가자. 프로그램 : 작업을 위해 실행할 수 있는 파일. 프로세스 : 연속적으로 실행되고 있는 프로그램 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스 프로세스는 앞서 언급했던대로, "실행되고 있는" 프로그램이다. 즉 운영체제 메모리에 올라와 실행되고 있는 단위라고 보면 된다. 특징 프로세스는 독립된 메모리 영역을 가지고 있다. Heap, Data, Code(text), Stack Heap : 프로세스가 실행되..
Intro 개발을 하다보면, 동기 / 비동기, Blocking & Non-Blocking 라는 용어는 한 번쯤 들어봤을 것이다. 그러나, 동기 / 비동기 & Blocking / Non-Blocking 각각의 내용을 제대로 명확하게 설명하기란 쉽지가 않다. 그래서 하나씩 뜯어 보면서, 어떤 목적으로 사용하는지에 대해 정리하고자 한다. Blocking I/O Application단에서는 I / O 작업을 직접 실행시킬 수 없다. 그래서 System_call로 Kernel을 통해 작업을 수행할 수 있다. system_call을 하게 되면 context-swtiching이 발생하면서 작업이 수행된다. 여기서 Blocking I / O을 통해 작업을 수행할 경우에는, 실행한 함수가 반환될 때까지 "대기"하고 있는..
Intro Spring Security를 사용하다 보면, 인증이 된 유저는 UsetDetailsService에서 리턴을 한 후 UserDetails 타입의 객체가 바로 Principal 로 변환되어 사용하게 된다. 즉 인증이 된 유저는 Principal이 되고 인증이 필요한 로직에 사용되게 된다. 가령 아래와 같은 코드에서 현재 인증이 처리된 유저의 클라이언트 등록 목록을 조회하는URI 요청이 들어올 시 파라미터로 현재 인증이 처리 된 Principal이 들어오게 되면서 해당 Principal의 name (username)으로 클라이언트 등록 조회 목록을 조회할 수 있게 된다. @GetMapping("/info") public ModelAndView registrationInfo(ModelAndView ..
글또 4기를 마치며 작년부터 참여하고 싶었던 모임 중 하나인 글또(글쓰는 또라이가 세상을 바꾼다)라는 모임에 올 3월부터 참여하게되었다. 글을 꾸준히 작성하고 제대로 작성 해보자라는 다짐 속에서 글또를 시작했고, 총 10개의 포스팅을 완료했다. 글또를 통해 바뀐 점 글쓰기 글또를 들어오기 전부터 공부한 내용을 블로그에 나름 꾸준히 작성하기는 했다. 하지만 작성 내용은 대부분 책의 내용을 요약하는 식이 대부분이었고, 다른 사람이 내 글을 읽는다는 관점에서 풀어 설명하는 글을 거의 보기 힘들었다. 그러나 글또를 하게 되면서, 이번 내가 작성한 글을 공유하고 피드백을 받으면서 나만 보는 글이 아닌 다른 사람이 읽어도 이해하기 쉬운 글을 작성하기 위해 노력을 했고, 이제 글을 작성할 때 단순히 정리가 아닌 남에..