시스템엔지니어 77

[프로토콜] MCP는 API의 다음 세대?, Copilot Agents

2025년 3월 초 대한민국에서 MCP, MCP Server 검색량이 증가함을 알 수 있다. 이유는?2024년 11월 Anthropic이 시작한 프로젝트 "MCP"를 오픈 소스로 공개하여 여러 회사가 채택하고, AI 도구 상호작용의 새로운 표준으로 자리잡아가는 중이기 때문이다.그래서 이번엔 간단하게 MCP가 뭔지 알아보려고 한다. MCP란?"AI 모델이 외부 도구 및 데이터 소스와 상호작용하는 방식을 표준화한 새로운 개방형 프로토콜이다."MCP는 Model Context Protocol의 약자로, AI 모델, 특히 대규모 언어 모델(LLM)이 외부 데이터 소스, 도구 및 기타 리소스와 상호 작용하는 방식을 표준화하는 오픈 프로토콜이다. MCP는 LLM이 주변 환경을 더 잘 이해하고, 더 정확하고 관련성 ..

[프론트엔드] CDN 개념과 특징

CDN(Content Delivery Network)전 세계에 분산되어 있는 서버들을 통해 사용자에게 웹 컨텐츠를 빠르고 효율적으로 제공하는 기술이다.웹사이트의 이미지, CSS, JavaScript 파일, 동영상 등 정적 컨텐츠를 사용자와 물리적으로 가까운 서버에서 전달하는 방식이다. 작동방식1. 자주 요청되는 컨텐츠를 전 세계 여러 지역에 위치한 엣지 서버(Edge Server)에 캐싱한다.2. 사용자가 웹사이트에 요청을 보낼 때, DNS를 통해 가장 가까운 엣지 서버로 트래픽이 라우팅되어 처리되도록 한다. 기대효과CDN을 적용하면 컨텐츠 요청이 매번 원본 서버에 직접 전달되지 않는다.1. 트래픽을 분산시키는 효과가 있다.2. 대규모 트래픽이 발생하더라도 안정적으로 컨텐츠를 제공할 수 있다.3. 물리적..

[프론트엔드] 프로토타입 상속의 동작 방식

프로토타입: 자바스크립트에서 객체 간의 상속을 구현하는 메커니즘이다. 자바스크립트의 모든 객체는 기본적으로 [[Prototype]]이라는 숨김 프로퍼티를 가지고 있으며, 이 프로퍼티는 다른 객체를 참조하거나 null 값을 가집니다. 프로토타입 연결은 Object.create()나 함수 생성자의 prototype 프로퍼티를 통해 이루어진다. -> 왜 프로토타입 상속이 필요할까?개발을 하다 보면 기존에 있는 기능을 가져와 확장해야 하는 경우가 생긴다.사람에 관한 프로퍼티와 메서드를 가진 user라는 객체가 있는데, user와 상당히 유사하지만 약간의 차이가 있는 admin과 guest 객체를 만들어야 한다고 가정했을 때"user의 메서드를 복사하거나 다시 구현하지 않고 user에 약간의 기능을 얹어 admi..

[백엔드] 연결 리스트, 포인터로 연결하여 관리

[연결리스트, 단일 연결 리스트(Singly Linked List)]연결리스트는 리스트 내의 요소(노드)들을 포인터로 연결하여 관리하는 선형 자료구조이다. 각 노드는 데이터와 다음 요소에 대한 포인터를 가지고 있다.첫 번째 노드를 HEAD, 마지막 노드를 TAIL연결 리스트는 메모리가 허용하는 한 요소를 계속 삽입할 수 있다. ->동적크기, 쉬운 삽입 삭제, 필요한 만큼 메모리 할당시각 복잡도는 탐색에는 O(n), 노드 삽입과 삭제는 O(1)라는 특징을 가지고 있다. 배열은 순차적인 데이터가 들어가기 때문에 메모리 영역을 연속적으로 사용한다.반면, 연결 리스트는 메모리 공간에 흩어져서 존재한다는 점에서 배열과 차이가 있다. [이중 연결 리스트(Doubly Linked List, Circular Linke..

[프론트엔드] BFF, MSA아키텍처에서 중간자 역할 수행

[요약]BFF는 MSA환경에서 프론트엔드와 백엔드 사이의 간극을 해소하는 역할을 하며, MSA의 단점을 보완하는 데 도움을 줄 수 있다.모놀로식 아키텍처에서 MSA로 전환하면서 시스템이 복잡해지는 경우가 많다. 특히, 프론트엔드 개발자는 여러 백엔드 서비스에서 필요한 데이터를 가져와 조합해야 하는 어려움을 겪는다.이 때 BFF 패턴을 적용하여 최적화된 API를 전달받아 프론트엔드 복잡성을 줄이고 개발 효율성을 높일 수 있다.  [BFF]BFF(Backend for Frontend)는 클라이언트가 백엔드 API를 직접 호출할 때 발생하는 여러 문제를 해결하기 위해, 프론트엔드를 위한 보조 서버를 두는 방식이다.BFF는 클라이언트와 백엔드 사이에서 데이터 가공 및 전달을 담당하며, 이를 통해 프론트엔드가 효..

[네트워크] 네트워크 기초 핵심 개념 10개

1. 정보 표현 단위: bit, byteBit (비트): 컴퓨터에서 정보를 표현하는 가장 작은 단위입니다. 0 또는 1의 값을 가질 수 있습니다.예시: 스위치의 ON/OFF 상태, 전기 신호의 높음/낮음.  Byte (바이트): 8개의 비트가 모여서 구성되는 단위입니다. 문자를 표현하는 데 주로 사용됩니다.예시: 'A'라는 문자는 1바이트로 표현될 수 있습니다.  더 큰 정보 표현 단위Kilobyte, Megabyte, Gigabyte, Terabyte: 더 큰 데이터 양을 나타내는 단위입니다.각각 1024바이트, 1024KB, 1024MB, 1024GB입니다.  2. 1 바이트는 8 비트1바이트는 8비트로 구성됩니다.컴퓨터에서 문자를 표현하거나 데이터를 처리하는 기본적인 단위입니다.예시: 8개의 0 또..

[Server] 웹 서버: 아파치(Apache) HTTP 서버

아파치(Apache) HTTP 서버는 전 세계에서 가장 널리 사용되는 웹 서버 소프트웨어 중 하나이다.아파치 소프트웨어 재단(Apache Software Foundation)에 의해 개발되었으며, 오픈 소스 라이선스 하에 배포된다. 그 덕분에 무료로 사용할 수 있으며, 소스 코드를 수정하여 자신의 필요에 맞게 커스터마이징할 수 있다.아파치의 주요 특징다중 플랫폼 지원: 아파치는 Linux, Windows, MacOS 등 다양한 운영 체제에서 실행될 수 있다.모듈식 구조: 아파치의 가장 큰 특징 중 하나는 모듈식 구조입니다. 사용자는 필요에 따라 모듈을 추가하거나 제거하여 웹 서버의 기능을 확장하거나 조정할 수 있다.확장성과 유연성: 다양한 모듈과 지원을 통해 아파치는 매우 유연하고 확장 가능합니다. 이는..

[Linux] 배치 파일(Batch File)

배치 파일(Batch File)은 Windows 운영 체제에서 사용할 수 있는 스크립트 파일의 일종이다.이 파일은 여러 명령어들을 순차적으로 기록하여 두었다가 한 번에 실행할 수 있게 해주는 텍스트 파일이다다.확장자는 .bat이며, 간단한 자동화 작업부터 복잡한 스크립트까지 다양한 용도로 활용됩니다.배치 파일의 기본 구성배치 파일은 일반적으로 일련의 명령어들과 제어문으로 구성된다. 이 명령어들은 Windows의 Command Prompt에서 실행할 수 있는 명령어와 동일하다다. 예를 들어, 파일을 복사하거나 디렉터리를 변경하는 등의 작업을 자동화할 수 있다.배치 파일 작성하기배치 파일을 작성하기 위해서는 단순히 텍스트 에디터(예: 메모장)를 사용하여 명령어들을 순서대로 입력하고, 파일을 .bat 확장자로..

AWS 네트워크 서비스

1. 네트워킹이란 IT 자원 간 연결하여 통신하는 환경 네트워킹 요소 1. OSI 7계층 모델 7계층 - 응용 계층: 응용 프로세스와 직접 연계하여 실제 응용 프로그램을 서비스하는 역할 6계층 - 표현 계층: 데이터 형식에 차이가 있을 때 데이터를 서로 이해할 수 있는 형태로 변환하는 역할 5계층 - 세션 계층: 종단의 대상 간 응용 프로세스 통신을 관리하는방법으로, 데이터 통신을 위한 논리적인 연결을 담당 4계층 - 전송 계층: 종단의 대상 간에 데이터 전송을 다루는 계층으로, 데이터 전송의 유효성과 효율성을 보장 3계층 - 네트워크 계층: 데이터를 목적지까지 전달하는 계층으로,최적의 통신 경로를 찾는다. 2계층 - 데이터링크 계층: 물리 계층에서 송수신되는 정보의 오류와 흐름을 제어 1계층 - 물리 ..

AWS 컴퓨팅 서비스

1. AWS 컴퓨팅 서비스 컴퓨팅 정의 컴퓨팅 = 서버 자원 AWS 컴퓨팅 서비스(4가지) EC2(Elastic Compute Cloud)클라우드 환경에서 서버 자원을 인스턴스(instance)라는 가상 머신(Virtual Machine, VM) 형태로 제공하는 가장 기본적인 AWS 컴퓨팅 서비스 ECS(Elastic Container Service): EC2 기반 관리형 클러스터에서 실행되는컨테이너 형태의 자원에 대해 배포, 스케줄링(scheduling), 스케일링(scaling) 등을 관리하는 서비스 Lambda: 서버리스(serverless) 컴퓨팅 서비스로, 서버리스라는 말 그대로 별도의 서버 설정이 없는 환경을 제공하여 코드만 실행해 주는서비스 Lightsail: 독립적인 환경을 제공하며, 최소..