모바엑스텀(MobaXterm)이란?모바엑스텀은 SSH 접속 도구로 사용이 편리하고 SFTP 등을 지원해 많은 사람들이 이용한다. 나도 예전엔 SSH는 putty를 사용하고 SFTP로는 파일질라를 따로 사용했는데, 모바엑스텀은 SSH와 SFTP를 모두 지원하기 때문에 훨씬 편리하다. 모바엑스텀은 SSH, SFTP 뿐만 아니라 Telnet, Rsh, Sdmcp, RDP, VNC, FTP, Serial, File, Shell, Browser, Mosh, Aws S3, WSL 등도 지원한다. 추가로 서버에 접속하는 계정과 비밀번호를 저장해서 자동 로그인도 가능하다. 모바엑스텀 설치https://mobaxterm.mobatek.net/download-home-edition.html MobaXterm free ..
모놀리틱(Monolithic) 아키텍처 모놀리틱(Monolithic) 아키텍처는 하나의 어플리케이션을 단일 독립 시스템으로 구축하는 아키텍처를 뜻한다. 소규모의 어플리케이션이라면 모놀리틱 아키텍처가 간단한 구조로 유지보수하기 더 용이할 수 있다.하지만 어플리케이션의 규모가 커질수록 아래와 같은 어려움들이 발생한다. 영향도 및 전체 구조 파악이 어려움빌드, 테스트, 배포 시간이 증가부분의 장애가 전체 장애로 이어짐부분적인 scale-out이 어려움작은 수정 사항에도 전체를 재빌드 및 배포해야 함이러한 문제점들을 보완하기 위해 등장한 아키텍처가 바로 MSA(Micro Service Architecture)이다. MSA(MicroService Architecture)란?미국의 유명한 소프트웨어 개발자 마..
미들웨어(Middleware)란? 미들웨어는 컴퓨터 제작 회사가 사용자의 특정한 요구대로 만들어 제공하는 프로그램으로, 운영 체제(OS)와 응용 소프트웨어의 중간에서 조정과 중개의 역할을 수행하는 소프트웨어이다 -위키백과- 미들웨어는 운영 체제(OS)와 응용 소프트웨어 중간에서 중간 매개체 역할을 하는 소프트웨어이다. 이러한 미들웨어는 애플리케이션, 데이터, 사용자를 연결하는 요소처럼 동작한다. AWS는 미들웨어를 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어라고 말한다. 즉 애플리케이션들이 효율적으로 연결되는 것을 돕는 소프트웨어라는 것이다. 미들웨어의 유형 메시지 지향 미들웨어(Message Oriented Middleware) 메시지 지향 미들웨어는 서로 다른 메시징 프로토콜을 사용..
스웨거(Swagger)란? 스웨거는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다 - 위키백과- 스웨거를 이용하면 간편하게 API 문서를 작성할 수 있다. 뿐만 아니라 간단하게 API 테스트도 해볼 수 있다. 스웨거외에도 유명한 API 문서 툴로는 Spring Rest Docs 등이 있다. Spring Rest Docs와 스웨거는 각각의 장단점이 존재한다. 우리는 스웨거가 적용하기 간단하고, 프런트엔드와 빠른 협업을 위해 당장 테스트를 하지 않아도 문서를 만들 수 있는 스웨거를 사용하기로 했다. Spring Rest Docs는 테스트코드를 통과하지 않으면 문서를 만들 수 없기 때문이다.(이것은 단점이자 장점..
프레임워크(Framework)란? 프레임워크는 복잡한 문제를 해결하거나 서술하는 데 사용되는 개본 개념 구조이다. -위키백과- 프레임워크는 애플리케이션 개발 시 필수적인 코드, 알고리즘, DB 커넥션 등의 기능들을 위해 뼈대(구조)를 제공한다. 개발자는 이러한 뼈대 위에서 코드를 작성해 원하는 애플리케이션을 개발할 수 있다. 프레임워크는 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하게끔 상호 협력하는 클래스와 인터페이스의 집합이라고 할 수 있다. 쉽게 말해 프레임워크는 개발자가 개발을 쉽게 할 수 있도록 뼈대를 제공해준다고 생각하면 된다. 예를 들어 Java 개발에서 사용되는 Spring 프레임워크나 Python 개발에 사용되는 Django, 안드로이드 앱개발에 사용되는 Androi..
CAP 정리란? 브루어의 정리란? CAP 정리 또는 브루어(Brewer)의 정리는 다음과 같은 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템은 존재하지 않음을 증명한 정리이다. 일관성(Consistency) : 모든 노드가 같은 순간에 같은 데이터를 볼 수 있다. 가용성(Availability) : 모든 요청이 성공 또는 실패 등의 결과를 반환활 수 있다. 파티션 허용(Partition tolerance) : 메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다. 위의 세 가지 조건의 첫 글자를 따서 CAP정리라고 부른다. 여기서 분산 시스템은 동시에 둘 이상의 노드(물리적 또는 가상머신)에 데이터를 저장하는 네트워크를 뜻한다. 세 가지 조건에 대해 더 자세히 알아보자면 다음..
해시 테이블이란? 해시 테이블은 (Key, Value)식으로 데이터를 저장하는 자료구조 중 하나로 key를 통해 평균 O(1)에 value를 검색할 수 있는 자료구조이다. 참고) [자료구조] 해시 테이블(Hash Table) 이란? | 해시 알고리즘 | 해시 함수 해시 테이블(Hash Table)이란? 해시 테이블은 (Key, Value)식으로 데이터를 저장하는 자료구조 중 하나로 key를 통해 평균 O(1)에 value를 검색할 수 있는 자료구조이다. 해시 테이블은 Key 값을 해시함수(Ha code-lab1.tistory.com 해시 테이블의 크기를 소수로 정하는 이유 public int hashCode() { final int prime = 31; //... } Java에서 hashCode() 함수..
스레드 풀의 크기를 적절히 설정해야 하는 이유 스레드를 생성하는 것은 비용이 드는 작업이다. 플랫폼마다 오버헤드는 다르지만, 스레드가 생성될 때 요청이 처리되는 지연시간(latency)과 OS에 의한 추가적인 처리 과정에 드는 시간 등 자원이 소모된다. 이러한 스레드 생성 비용을 줄이기 위해 스레드 풀이 필요하다. 스레드 풀에서 미리 생성해둔 스레드를 재사용함으로써 자원 낭비를 막을 수 있기 때문이다. 그렇다면 스레드 풀에 무조건 많은 스레드를 생성해두면 좋을까? 아래에서 자세히 알아보겠지만, 스레드를 많이 생성해둔다고 그 스레드를 다 사용할 수 있는 것은 아니다. 쓸데없이 스레드를 많이 생성한다면 생성하는 데에 드는 자원과 비용이 낭비된다. 그렇다고 스레드를 부족하게 만들어둔다면 CPU 사용률이 낮아지..
As-a-service IaaS(Infrastucture-as-a-service), PaaS(Platform-as-a-service), SaaS(Software-as-a-service)의 차이점은 뭘까? 우선 "As-a-service" 가 무슨 뜻인지 알아야 한다. "As-a-service"는 보통 제 3자로부터 제공받는 클라우드 컴퓨팅 서비스를 뜻한다. 클라우드 컴퓨팅 서비스를 이용하면 사용자는 더 적은 온-프레미스 인프라를 관리하게 된다. 온-프레미스 인프라는 사용자에게 많은 책임을 전가한다. 만약 모든 하드웨어와 소프트웨어가 온-프레미스라면, 사용자는 모든 것을 유지보수 및 관리해야 한다. 하지만 제 3자로부터 클라우드 컴퓨팅 서비스를 제공받는다면 많은 부분의 관리를 제 3자에게 맡기고 더 중요한 ..
EAI란 무엇인가? EAI(Enterprise Application Integration)은 말 그대로 기업 애플리케이션 통합이다. EAI는 데이터를 교환하고 제공하는 서비스를 호출하여 기업 내 애플리케이션 사이의 통신을 제공하는 프로세스이다. EAI가 애플리케이션을 통합하고 서로 통신을 보장하면 비즈니스를 새롭고 혁신적인 방식으로 운영할 수 있다. 쉽게 말해, 기업 내의 다양한 애플리케이션들이 서로 상호 작용하기 쉽게 도와주는 솔루션이 EAI라고 생각하면 된다. EAI의 등장 배경 전통적인 비즈니스 환경에서 애플리케이션들은 별도의 비즈니스 단위 혹은 기능 내에서 서로 독립적으로 동작하고 사용하는 데이터를 잘 공유하지 않았다. 따라서 이러한 방식은 비즈니스 간의 상호연동이 쉽지 않고 많은 시간이 걸리며 ..