목록분류 전체보기 (187)
JAN's History

안녕하세요! Git을 사용하면서 git rebase와 git merge 중 어떤 것을 사용해야 할지 고민해 본 적 있으신가요?이 두 명령어는 브랜치 통합이라는 동일한 목표를 가지고 있지만, 그 과정을 처리하는 방식과 최종적인 커밋 이력(History)에 남는 형태가 완전히 다릅니다.Git 워크플로우를 한 단계 업그레이드하기 위해, 두 명령어의 차이점과 적절한 사용 시점을 자세히 알아보겠습니다. 1. Git Merge: 통합의 흔적을 남기는 병합 융합 (Non-linear History) git merge는 두 브랜치의 변경 사항을 합칠 때, 새로운 커밋(Merge Commit)을 생성하여 통합 과정을 기록합니다.동작 방식feature 브랜치와 main 브랜치가 각각 분기하여 독자적인 커밋을 쌓았을 때, ..

React에서 컴포넌트를 설계할 때 우리는 흔히 UI와 상태 로직 관리를 한 컴포넌트 안에 섞어서 작성합니다.예를 들어 드롭다운 메뉴를 만든다고 하면 버튼 클릭, 메뉴 열고/닫기 상태, 선택된 항목 관리, 렌더링 되는 리스트 아이템과 스타일까지 모두 한 컴포넌트에서 처리하는 경우가 많죠. 이렇게 작성하면 초기에 빠르게 기능을 구현할 순 있지만, 컴포넌트가 커지고 다양한 UI 요구사항이 생기면 재사용성과 유지보수성이 떨어질 수 있습니다. 여기서 등장한 것이 바로 헤드리스(Headless) 컴포넌트 입니다. 헤드리스 컴포넌트는 UI를 직접 렌더링하지 않고, 상태와 동작(로직)만 제공하는 컴포넌트를 말하는데요! 즉, 어떻게 보여줄지는 사용자에게 맡기고 기능과 상태만 제공하는 구조라고 할 수 있습니다.드롭다운 ..

네트워크를 이해하려면 데이터가 어떻게 이동하는지와 각 장치가 어떤 역할을 하는지를 아는 것이 중요합니다.이 글에서는 이더넷 프레임, MAC 주소, NIC, 라우터, 스위치를 중심으로 로컬 네트워크(LAN)와 인터넷 통신 구조를 설명하려고 합니다!NIC(Network Interface Card)와 MAC 주소NIC는 컴퓨터나 서버가 네트워크에 연결될 수 있도록 해주는 하드웨어 장치입니다.NIC는 데이터링크 계층(2계층)과 물리계층(1계층) 역할을 담당하며, 이더넷 프레임이라는 단위로 데이터를 주고받습니다.MAC 주소: NIC마다 고유하게 부여된 48비트 식별자LAN에서 목적지 장치를 식별하는 데 사용IP와 달리 LAN 내부에서만 의미가 있으며, 각 홉마다 변경될 수 있음예: 노트북 NIC MAC = 00:..

개발하는 프로젝트가 멀티프로세스로 떠있는데, Node.js는 싱글 프로세스인데 어떻게 멀티프로세스로 떠있다는거지..? 라는 의문이 생겨서 정리해보았습니다.먼저 멀티 프로세스와 싱글 프로세스의 개념을 알아보겠습니다.싱글프로세스하나의 프로세스에서 모든 작업을 처리합니다.Node.js는 기본적으로 싱글스레드 이벤트 루프 기반이므로, 기본 서버는 싱글프로세스입니다.CPU 코어가 여러 개라도, 기본 싱글프로세스는 한 코어만 사용 가능 → CPU 자원 활용이 제한적입니다.멀티프로세스CPU 코어 수만큼(또는 지정한 수만큼) 프로세스를 띄워 병렬로 작업 처리합니다.Node.js에서는 cluster 모듈이나 throng 같은 라이브러리를 사용해 구현할 수 있습니다.각 프로세스는 독립적인 메모리 공간을 가지므로 메모리 사..
서버 한 대에 여러 서비스를 띄우면서 보안도 챙기고 싶을 때 어떻게 해야 할까요?이번 글에서는 단일 서버에서 여러 포트를 활용해 웹서버, 백엔드, DB를 분리 운영하고, 리눅스 방화벽(ufw, iptables)으로포트별 접근 제어하는 방법을 예시와 함께 알아보겠습니다!왜 포트별 서비스 운영과 방화벽 설정이 중요한가?서버 비용 절감 (서버 1대만 사용)보안 강화 (필요한 포트만 외부 개방)서비스 안정성 향상 (내부 DB에 외부 접근 차단)서비스별 포트는 어떻게 관리할까예시) 3가지 서비스 포트서비스포트 번호 역할웹서버 (Nginx/Apache)80, 443외부 사용자 접속용백엔드 API (Node.js 등)8080API 요청 처리용데이터베이스 (MySQL)3306내부 데이터 저장, 외부 차단일반적으로 사용..

회사에 인턴분들이 오시는데, 제 자리가 밀려날 예정이라 (이제 막내 탈출..) 자리를 옮겨야하는 참인데요.문득 랜선도 바꾸면 내 ip주소도 바뀌나? 싶은 생각이 들어서 네트워크 공부도 할겸 내용을 정리해봤습니다!랜선과 네트워크 연결의 원리 회사나 집에서 랜선을 꽂으면 인터넷이 바로 되죠.사실 랜선은 단순히 내 컴퓨터와 네트워크 장비를 물리적으로 연결하는 역할을 하는데요.그 랜선을 통해 내 컴퓨터는 공유기나 스위치 같은 장비와 통신을 시작하고,이 과정에서 IP 주소 같은 네트워크 정보를 받아서 실제 인터넷에 연결되는 거랍니다!IP 주소는 누가 할당해줄까?네트워크에 접속하면, 컴퓨터는 DHCP(Dynamic Host Configuration Protocol) 서버에“나 IP 주소 주세요!”라고 요청합니다...

특정 디바이스 혹은 특정한 메뉴의 트래픽이 월등히 높아서버 부하가 많이 걸린다면 어떤 방식으로 아키텍처를 구성, 변경해야할까요? 이 질문에 대해선 평상시에 공부를 하지 않았다면 할 수 있는 답변은,'병목 지점을 파악해서 서버를 늘리거나 DB의 수행 속도를 개선해야한다' 정도일 수 밖에 없는데요!질문의 의도는 점진적은 구조적 개선을 고민해보았는지, 데이터 및 트래픽 부하 분산에 대해서 알고 있는지 물어보기 위함입니다.이를 위해 지금부터 '트래픽이 많아지거나 서비스가 성장하는 상황에서 점진적인 고도화와 대량 트래픽 처리 방법과 개념'에 대해 설명하려고 합니다! 1. 병목 지점 파악과 기본 대응처음 접근법은 단순합니다."어디가 병목인지 파악하고, 서버를 증설하거나 DB 성능을 튜닝하자."하지만 실제 서비스가 ..

메시지 큐 시스템의 2가지 패턴에 대해서 설명해보세요.메시지 큐란 무엇인가요?메시지 큐는 publisher(게시자)와 Consumner(소비자)로 구성됩니다.통신은 일반적으로 게시자가 소비자에게 명령을 내리는 방법인데요.생산자가 일반적으로 큐에 메시지를 넣고 소비자는 이 메시지를 소비하고 작업을 수행하는 역할을 합니다.여기에서 'm n+1'을 큐에 넣는 publisher 서비스를 확인하실 수 있죠.이미 큐에 여러개의 메시지가 존재해 소비되기를 기다리고 있는 것을 볼 수 있습니다. 오른쪽에는 큐에서 메시지를 수신 대기하는 consumber A, B가 존재합니다.먼저 Publisher의 메시지가 대기열 끝으로 이동한 것을 확인할 수 있는데요.소비자 A가 메시지 'm1'을 읽었으므로 다른 서비스 'B'가 더이..