목록전체 글
말하는 감자의 성장 기록
모놀리식 아키텍처모놀리식 아키텍처는 UI, 비즈니스 로직, 데이터 접근까지 애플리케이션의 모든 부분이 하나의 코드베이스, 하나의 실행 파일, 하나의 배포 단위로 묶인 구조이다. 가장 전통적이고 직관적인 방식이며, 대부분의 프로젝트가 여기서 출발한다. 내부 컴포넌트들은 같은 프로세스 안에서 함수 호출로 직접 소통하고, 데이터는 보통 하나의 데이터베이스를 공유한다.장점단순한 개발과 배포: 빌드와 배포가 한 번에 끝나고, 배포 파이프라인이 단순하다.빠른 초기 생산성: 구조가 직관적이라 개발 초기 속도가 빠르다.빠른 내부 통신: 컴포넌트 간 호출이 같은 프로세스 안의 함수 호출이라 네트워크 지연이 없다.쉬운 데이터 일관성: 하나의 데이터베이스와 단일 트랜잭션으로 일관성을 지키기 간단하다.직관적인 디버깅: 모니터..
최근에 면접에서 웹 컴포넌트(Web Component)의 개념에 대해 질문을 받은적이 있다. 하지만 React, Vue 등의 프레임워크를 사용해왔고, 순수 HTML과 JavaScript로 프론트엔드 코드를 작성할 일이 없었던 나는 웹 컴포넌트에 대해 들어본 적도, 공부한 적도 없어 답변을 하지 못했다.이번에 크롬 확장 프로그램을 개발하게 되었는데, 같은 HTML이 반복되다 보니 HTML을 공통 컴포넌트로 만들고 싶다는 생각이 들었다. Claude와 이에 대해 토론 하던 중 클로드가 Web Component를 추천해줘서 이번 기회에 Web Component에 대해 공부하고 정리해보게 되었다. 웹 컴포넌트란?웹 컴포넌트는 재사용 가능한 커스텀 HTML 요소를 만들기 위한 웹 표준 기술의 모음이다. 특정 라..
Cassandra란? Apache Cassandra는 분산 NoSQL 데이터베이스다. 단일 장애점(Single Point of Failure) 없이 여러 노드에 데이터를 분산 저장하는 것이 핵심이다.MySQL 같은 RDBMS는 데이터가 많아질수록 한 서버가 버팀목이 된다. 그 서버가 죽으면 전체 서비스가 장애를 겪고, 수평 확장도 구조적으로 어렵다. Cassandra는 이 문제를 해결하기 위해 설계되었다. 노드를 추가하기만 하면 자동으로 확장되고, 어떤 노드가 죽어도 서비스는 계속 운영된다.마스터가 없는 구조RDBMS는 Master-Slave 구조다. Master가 죽으면 장애가 발생한다. 반면, Cassandra는 모든 노드가 동등한 역할(Peer-to-Peer)을 하기 때문에 누가 죽어도 나머지 노드..
AWS 제공 솔루션AWS에서는 IT 시스템의 종류를 솔루션이라고 정의한다. 아래는 대표적인 솔루션들이다.엔터프라이즈 애플리케이션(Enterprise Application) 구축서버리스 애플리케이션(Serverless Application) 구축AI와 머신러닝분석, 데이터 레이크(Data Lake): 인프라스트럭처 관리에 따른 대량의 데이터를 효율적으로 안전하게 분석하는 환경을 제공IoT: 센서 등 작은 기기를 사용한 시스템을 제공스토리지: 사진이나 동영상 등의 저장소를 제공게임 개발: 게임 개발에서 운용까지의 전체 셋을 지원이 중 엔터프라이즈 애플리케이션(소프트웨어)과 서버리스 애플리케이션(컴퓨팅)을 소개하겠다. 1. 엔터프라이즈 소프트웨어란?엔터프라이즈 소프트웨어는 개별 사용자가 아니라 조직 전체에서 ..
온프레미스 서버를 클라우드로 옮기는 방법은 여러 가지가 있다.Gartner가 처음 5R로 정리하고, AWS가 단계적으로 확장해 현재는 7R이 됐다. Rehost, Replatform, Refactor가 주로 언급되지만 나머지도 실무에서 중요하다. 특히 마이그레이션 프로젝트를 시작할 때 "이걸 옮겨야 하나?"를 먼저 따지는 게 맞는데, 그 질문에 답하는 게 바로 Retire와 Retain이다. 클라우드 마이그레이션 전략Retire - 그냥 버린다. 쓰지 않는 시스템을 이전할 이유가 없다.Retain - Revisit. 일단 건드리지 않는다. 규정 문제나 의존성 때문에 아직 이전하기 어려운 것들.Repurchase - Drop & Shop. 기존 소프트웨어를 SaaS로 대체한다. 자체 CRM을 Salesfo..
보안 그룹(Security Group)클라우드 환경이나 네트워크(AWS, GCP, Azure 등)에서 트래픽을 제어하는 가상의 방화벽 역할을 하는 접근 제어 규칙의 집합이다. 보안 그룹은 인스턴스(서버)에 대한 인바운드(들어오는) 및 아웃바운드(나가는) 트래픽을 제어한다. 주요 특징 1. 상태 저장(Stateful)인바운드 요청을 허용하면, 그에 대한 응답 트래픽은 자동으로 허용되어 별도로 아웃바운드 규칙을 추가하지 않아도 된다.인바운드에서 허용한 트래픽이 한 번 인바운드를 통과하면 아웃바운드 규칙에 영향을 받지 않고 나갈 수 있다.인바운드를 통해 온 트래픽을 보안 그룹에서 기억하고 있다가 트래픽이 나갈 때 아웃바운드 규칙에 구애 받지 않고 내보낸다.반대로 아웃바운드에서 허용한 트래픽이 한 번 아웃바운드..
EC2를 통해 RDS에 접속하는 이유RDS는 보안상의 이유로 프라이빗 서브넷에 위치시키는 것이 일반적이다. 프라이빗 서브넷에 있다는 것은 인터넷에서 직접 접근할 수 없다는 뜻이다. DB를 외부에 직접 노출하면 그만큼 공격받을 위험이 커지기 때문이다. 실제로 해보면 연결이 되지 않는 경우가 대부분이다.그래서 EC2 인스턴스를 경유해서 접속해야한다. EC2는 퍼블릭 서브넷에 위치해 외부에서 SSH로 접근할 수 있으면서, 동시에 같은 VPC 안에 있는 RDS에도 접근할 수 있다. 즉, 내 PC → EC2 → RDS 순서로 접속하는 것이다. 이런 역할을 하는 서버를 배스천 호스트(Bastion Host) 라고 부른다. (쉽게 말해 문지기)IntelliJ에서는 이 구조를 SSH 터널 기능으로 간단하게 설정할 수 ..
4.1 데이터베이스의 기본데이터베이스(DB, DatabBase): 일정한 규칙 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음DMBS(DataBase Management System): 해당 데이터베이스를 제어, 관리하는 통합 시스템예시: MySQL데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정리된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있음데이터베이스는 실시간 접근과 동시 공유가 가능4.1.1 엔터티엔터티는 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사예시: 회원 엔터티는 이름, 아이디, 주소, 전화번호 속성이 있음약한 엔터티와 강한 엔터티A가 혼자서는 존재하지 못하고 B의 존재 여부에 따라 종속적→ A는 약한 엔터티, B는 강한 엔터티예시: 방은 약..