Cursor

MCP란 무엇인가?

MCP(Model Context Protocol)는 OpenAI에서 제안한 일종의 AI 모델과 외부 시스템 간의 인터페이스 표준이다. 기존에는 단순히 이미지나 구조 데이터를 AI에 전달하는 방식이었다면, MCP는 이보다 더 구조적이고 의미 있는 컨텍스트를 AI에 제공함으로써 정확하고 일관된 코드 생성을 가능하게 한다.

예를 들어, Figma 디자인을 MCP를 통해 전달하면 "단순히 이게 무엇처럼 보인다"가 아니라 "이 요소는 버튼이고, 오토 레이아웃이며, 반복되는 UI 컴포넌트다" 라는 식의 정제된 정보가 포함된다. 그 결과, Cursor와 같은 AI 코딩 툴은 더 정확하고 의미 있는 코드를 자동으로 생성할 수 있게 된다.


연동 과정 요약

MCP 서버 설정

Cursor에서 Figma MCP를 활용하기 위해서는 로컬에 MCP 서버를 구동해야 한다. 프로젝트 루트에 다음과 같은 .cursor/mcp.json 파일을 생성하여 MCP 서버를 정의한다:

{
  "mcpServers": {
    "figma-developer-mcp": {
      "command": "npx",
      "args": ["-y", "figma-developer-mcp", "--stdio"],
      "env": {
        "FIGMA_API_KEY": "본인의 Figma API 키"
      }
    }
  }
}
  • figma-developer-mcp는 Figma 측에서 제공하는 공식 MCP 서버이다.
  • FIGMA_API_KEY는 Figma 계정의 Personal Access Token을 통해 발급 가능하다.
  • 보안을 위해 해당 키는 절대 git에 업로드되지 않도록 .gitignore에 등록해야 한다.

디자인 가져오기

서버가 정상적으로 설정된 이후, Cursor 내에서 Cmd+K → Figma: Import 명령을 입력한 뒤, Figma 파일 링크를 삽입하면 원하는 디자인 프레임을 선택할 수 있다. 선택된 프레임은 MCP 서버를 통해 해석되어, Cursor 상에서 자동으로 React + Tailwind 기반의 코드로 변환된다.


사용 후기 및 기술적 관찰

장점

  • UI 반복 작업의 자동화
    로그인 폼, 리스트 항목 등 반복적으로 사용되는 UI는 높은 정확도로 자동 생성되며, 코드 품질도 충분히 실용적이었다.
  • 계층 구조의 인식 능력
    오토 레이아웃, 프레임, 컴포넌트 등의 구조를 정확하게 인식하여 코드에 반영해주는 점은 기대 이상이었다.
  • 직접 제작한 디자인도 문제 없이 인식 가능
    전문 디자이너가 제작한 것이 아니더라도, 명확한 구조를 가진 디자인이라면 MCP를 통해 충분히 활용할 수 있다.

한계점

  • 대형 프레임 처리의 제한
    한 번에 너무 많은 요소를 불러올 경우 정확도가 떨어지거나 응답이 지연되는 경우가 있었다. 디자인은 기능 단위로 나누어 가져오는 것이 효율적이다.
  • 불필요한 속성 자동 추가
    예: use client를 과도하게 삽입하거나, 필요 없는 wrapper div 생성 등은 정제 작업이 필요하다.
  • 코드 중복 문제
    컴포넌트화되지 않은 스타일 중복이 종종 발생하여, 별도의 리팩토링이 필요하다.

MCP 활용 팁

1. cursor_rules.mdc 활용

Cursor는 프로젝트 내부의 규칙을 반영할 수 있는 .mdc 파일을 제공한다. 다음과 같이 작성해두면, 생성되는 코드가 프로젝트 스타일에 더욱 잘 맞는다:

- Function Component 사용
- Tailwind CSS 적용
- 공통 컴포넌트는 src/components 디렉토리에 저장
- React의 use client는 반드시 필요한 경우만 사용

2. 프레임 단위 구성

전체 페이지를 한 번에 처리하기보다는 UI 단위별로 쪼개서 불러오는 방식이 훨씬 안정적이고 코드 품질도 좋다. 예: Header, Sidebar, Form 등으로 분할.

3. 커스텀 컴포넌트 선제시

Cursor는 기존에 작성된 컴포넌트를 참조하여 유사한 구조를 제안할 수 있다. Button.tsx, Input.tsx 등의 기본 컴포넌트를 미리 정의해두면, 이후 생성되는 코드의 일관성을 높일 수 있다.


결론 및 총평

항목  평가
초기 도입 난이도 보통 (설정 필요)
코드 정확도 높음 (특히 단위 UI 기준)
확장성 중간 (복잡한 디자인은 제한 있음)
생산성 향상 높음 (단순 UI에 대해 매우 빠름)

개인 개발자 관점에서 볼 때, MCP는 아직 발전 중인 기술이지만, 작은 규모의 프로젝트나 반복 UI가 많은 작업에서 충분한 가치를 제공한다. 특히 Cursor와의 연계는 자동화 가능성을 실질적으로 체감할 수 있는 경험이었다.


향후 계획

  • Emotion, SCSS 등 Tailwind 외 프레임워크로 확장 가능성 실험
  • 디자인 시스템과 연계한 자동화 시나리오 구성
  • 협업 환경에서의 MCP 워크플로우 검토

마무리

MCP는 단순한 디자인 → 코드 자동화 수준을 넘어, "디자인의 의미"를 AI가 이해할 수 있게 만들어주는 중요한 기술로 여겨진다. 아직 학습 리소스나 사례가 많지는 않지만, 직접 실험해보는 과정에서 많은 인사이트를 얻을 수 있었다.

Cursor + MCP 조합은 특히 개인 개발자에게 시간과 품질 모두를 절약할 수 있는 도구가 될 수 있다. 실무에 적용하지 않더라도, 학습 목적으로 충분히 시도해볼 만한 가치가 있다.

 

홈페이지를 만들고 싶은데, 코딩은 어렵고 어디서부터 시작해야 할지 모르겠다면?
워드프레스(WordPress)는 비전문가도 손쉽게 웹사이트를 만들 수 있도록 도와주는 최고의 플랫폼입니다.
이 글에서는 워드프레스의 개념부터 설치, 테마 설정, 기본 홈페이지 제작 방법까지 초보자도 쉽게 따라할 수 있도록 단계별로 설명합니다.

워드프레스


💡 워드프레스란?

WordPress는 웹사이트, 블로그, 쇼핑몰, 포트폴리오 등 다양한 웹사이트를 만들 수 있는 무료 오픈소스 CMS(콘텐츠 관리 시스템)입니다.
전 세계 수많은 웹사이트들이 워드프레스를 기반으로 제작되어 있으며, 테마(디자인)와 플러그인(기능 추가)을 통해 원하는 형태로 쉽게 커스터마이징할 수 있습니다.


🛠 워드프레스로 홈페이지 만들기 – Step by Step

1. 도메인과 웹호스팅 준비하기

  • 도메인: 웹사이트 주소 (예: myhomepage.com)
  • 호스팅: 웹사이트 데이터를 저장할 서버 공간

추천 서비스

  • 도메인: 가비아, 후이즈, 카페24
  • 웹호스팅: 카페24, Bluehost, SiteGround 등
    👉 초보자라면 "워드프레스 자동 설치 지원" 기능이 있는 호스팅을 추천합니다.

2. 워드프레스 설치하기


3. 테마 선택 및 설치

테마는 사이트의 디자인을 결정하는 요소입니다.

  • 워드프레스 관리자 페이지 → 외모 → 테마 → 새로 추가
  • 무료 테마도 다양하고, 유료 프리미엄 테마도 존재

추천 무료 테마

  • Astra (가볍고 빠름)
  • OceanWP (다기능)
  • Hello Elementor (엘리멘터 전용)

4. 페이지 만들기 & 메뉴 구성

  • 페이지 → 새 페이지 추가 (예: 홈, 소개, 연락처)
  • 외모 → 메뉴에서 페이지들을 원하는 순서로 구성

5. 플러그인 설치로 기능 확장하기

플러그인은 홈페이지에 다양한 기능을 추가할 수 있는 도구입니다.

추천 플러그인

  • Elementor: 드래그 앤 드롭 방식의 페이지 빌더
  • Yoast SEO: 검색엔진 최적화(SEO)
  • WPForms: 쉽고 간단한 문의 양식 생성

6. 홈페이지 디자인 및 콘텐츠 작성

  • Elementor나 기본 편집기를 이용해 섹션 추가, 이미지, 텍스트 입력
  • 필요 시 블로그 형태로 게시물 추가 (글 메뉴 활용)

7. 웹사이트 공개하기

  • 모든 설정이 완료되었다면, 사이트를 공개(Launch) 해도 좋아요!
  • 설정 → 일반에서 사이트 제목, 설명 등을 입력
  • 설정 → 읽기에서 "검색 엔진이 사이트를 인덱싱하지 않도록" 하는 옵션이 꺼져 있는지 확인

AI와 대화를 나눠본 적이 있다면, 이런 생각 한 번쯤 해봤을 거예요.
“얘가 내 말을 좀 더 잘 이해했으면 좋겠는데…”
“이전에 말한 걸 또 말해야 돼?”

바로 이런 문맥(Context)의 한계를 극복하기 위해 등장한 것이 MCP(Model Context Protocol)입니다.
최근에는 Claude를 만든 Anthropic이 MCP를 적극적으로 채택하며 주목받고 있죠.

이 글에서는 다음과 같은 내용을 한 번에 정리해드립니다:

  • MCP란 무엇인가?
  • 기존 API와 어떤 차이가 있을까?
  • 어떻게 동작하고 어떤 구조를 갖고 있을까?
  • 실무에서 어떻게 활용하면 좋을까?
  • 설계 시 꼭 알아야 할 팁은?

🔍 MCP란 무엇인가요?

MCP (Model Context Protocol)는 대형 언어 모델(LLM)이 외부 도구나 데이터와 상호작용할 수 있게 해주는 표준 프로토콜입니다.
쉽게 말하면,

AI 모델을 위한 "USB-C 포트" 같은 것

여러 장치가 하나의 USB-C 포트를 통해 연결되듯,
MCP는 AI가 다양한 도구, 데이터 소스, API와 단일한 방식으로 통신할 수 있도록 도와줍니다.

📌 요약 정의

MCP는 AI 모델과 외부 시스템 사이의 문맥(Context) 전달을 위한 통일된 연결 규약이다.


🧱 MCP 아키텍처는 어떻게 생겼을까?

MCP는 기본적으로 클라이언트-서버 구조를 따릅니다:

  • MCP 호스트: AI 기반 앱 (예: Claude Desktop, AI IDE 등)
  • MCP 클라이언트: 서버와의 연결 유지
  • MCP 서버: 실제로 기능을 제공하는 가벼운 서버 (데이터베이스, 파일 시스템, 외부 API 등과 연결)
  • 로컬/원격 자원: 데이터 소스나 API

🧠 중요한 점: MCP는 직접 연산을 하지 않고, 데이터 흐름과 명령어 교환만 중계한다는 것!

MCP 아키텍처


⚖️ API vs MCP – 뭐가 다른가요?

기존의 API 방식과 비교하면 MCP는 이런 점에서 뛰어납니다:

항목 API  MCP
통합 방식 각 API별 개별 통합 필요 단일 표준화된 연결 방식
실시간 통신 ❌ 요청-응답 기반 ✅ 지속 연결(WebSocket 기반 가능)
동적 탐색 ❌ 하드 코딩 필요 ✅ 도구 목록 동적 탐색 가능
보안 API마다 인증 로직 필요 일관된 액세스 제어 제공
확장성 새 API 추가마다 재개발 플러그 앤 플레이 방식 연결

✅ 요약하자면:

API는 “문마다 다른 열쇠”가 필요한 방식
MCP는 “하나의 통합된 만능 키”

API


🧪 실전 예제 – 어디에 쓸 수 있나요?

1. ✈️ 여행 도우미 AI

  • API 방식: Google 캘린더, 항공사, 이메일 등 각각 따로 통합 필요
  • MCP 방식: 단일 프로토콜로 캘린더, 예약, 이메일 등을 AI가 실시간으로 확인하고 작업

2. 🧑‍💻 AI 기반 IDE

  • API 방식: 파일 시스템, Git, 패키지 관리자 등 각각 통합
  • MCP 방식: 모든 도구를 하나의 MCP 통신으로 연결 → 코드 컨텍스트 이해, 추천, 자동화 강화

3. 📊 데이터 분석 도우미

  • API 방식: 각 데이터베이스 별 커넥터 작성, 인증 관리 필요
  • MCP 방식: 여러 데이터 소스를 MCP 서버에 연결하면 AI가 동적으로 분석 요청

✍️ 프롬프트 설계 + MCP 활용 팁

MCP는 그 자체가 프로토콜이지만, 좋은 결과를 위해서는 프롬프트와 컨텍스트 구성도 중요합니다.

MCP + 프롬프트 설계 5가지 팁

  1. 시스템 메시지로 역할을 명확히
    • 예: “당신은 사용자의 회의 일정을 조정하는 비서입니다.”
  2. 대화 히스토리는 요약해서 정리
    • 예: “사용자는 React, TypeScript 기반 프론트엔드 개발자입니다.”
  3. 현재 입력은 명확하게 구분
    • “오늘 오후에 회의 하나 더 잡아줘”
  4. 도구 연결 정보는 구조적으로 제공
    • 캘린더 연결 여부, 이메일 연동 여부 등
  5. AI가 스스로 도구를 ‘발견’할 수 있게
    • “사용 가능한 MCP 도구 목록을 알려줘” → AI가 알아서 찾아 씀

🧾 요약 정리

구분  내용
🧠 정의 AI가 외부 도구/데이터와 통합되기 위한 표준 연결 프로토콜
🧰 구조 클라이언트 - MCP 서버 - 로컬/원격 리소스
📈 장점 단일 통합, 실시간성, 유연성, 동적 탐색
🔄 API와 차이 하드코딩 X, 연결 유지 O, 통합 반복 없음
💡 활용 예 여행 도우미, AI IDE, 데이터 분석, 이메일 자동화 등

🧩 마무리 – MCP는 AI 시대의 인터페이스다

AI가 도구와 데이터를 자유롭게 다루기 위해서는 그에 맞는 문맥 중심 인터페이스가 필요합니다.
MCP는 단순한 API의 대체제가 아닙니다.

MCP는 “AI가 도구를 쓸 수 있게 해주는 표준 인터페이스”이며,
미래의 스마트 앱들은 모두 이 방식을 채택할 가능성이 높습니다.

앞으로 AI 기반 시스템을 설계하거나, LLM 기반 서비스를 만들 계획이라면
MCP는 꼭 알아야 할 개념이에요.

Figma

💡 피그마(Figma)란?

  • 웹 기반 디자인 툴: 설치 없이 브라우저에서 바로 사용 가능
  • 실시간 협업 가능: 구글 문서처럼 함께 작업 가능
  • 디자인, 프로토타입, 피드백까지 한 번에 가능

👉 공식 홈페이지: https://www.figma.com/ko-kr/


🖥️ 피그마 기본 화면 구성

  1. 툴바 - 기본 도구들 (프레임, 텍스트 등)
  2. 레이어 패널 - 요소 계층 구조 확인
  3. 캔버스 - 디자인 작업 공간
  4. 속성 패널 - 선택한 요소 스타일 설정

피그마 기본 화면


✏️ 기본 사용법 5가지

1. 프레임(Frame) 만들기

→ 툴바에서 Frame 선택 후 모바일/웹 사이즈 선택

2. 텍스트 추가하기

→ T 키 또는 Text 클릭 후 캔버스에 입력

3. 도형 그리기

→ R(사각형), O(원), L(선) 단축키로 빠르게 생성

4. 색상 변경

→ 우측 Fill 설정에서 컬러 선택

5. 요소 정렬 및 그룹화

→ 여러 요소 선택 → Align 도구로 정렬
→ Cmd/Ctrl + G 로 그룹화


🎨 피그마는 어디에 쓰이나요?

용도 설명
UI/UX 디자인 앱, 웹사이트 인터페이스 설계
프로토타입 실제처럼 작동하는 화면 시뮬레이션
마케팅 디자인 배너, 카드 뉴스, 포스터 제작
협업 및 피드백 팀원과 실시간 의견 교환 가능

⌨️ 꼭 알아두면 좋은 피그마 단축키 모음

기능 단축키 (Mac / Windows)
프레임 생성 F
텍스트 입력 T
사각형 R
원형 O
그룹화 / 해제 Cmd/Ctrl + G / Shift + Cmd/Ctrl + G
컴포넌트 만들기 Cmd/Ctrl + Alt + K
복제 Cmd/Ctrl + D
스마트 정렬 Shift 누른 채 정렬
Auto Layout 추가 Shift + A

 

 

UX/UI

✅ UX(User Experience)란?

UX는 사용자 경험을 의미합니다. 사용자가 웹사이트나 앱을 사용할 때 느끼는 전체적인 경험과 만족도를 말합니다.

✔️ UX의 주요 요소:

  • 사용 편의성 (Usability)
  • 직관적인 흐름 (Navigation)
  • 감정적 만족 (Emotional Impact)
  • 접근성 (Accessibility)

예를 들어, 쇼핑몰 앱에서 상품을 찾고 구매까지 가는 과정이 쉽고 빠르며 즐거우면 좋은 UX라고 할 수 있어요.


✅ UI(User Interface)란?

UI는 사용자 인터페이스, 즉 사용자가 시스템과 상호작용하는 화면의 시각적 구성 요소를 의미합니다.

✔️ UI의 주요 요소:

  • 버튼, 메뉴, 아이콘
  • 레이아웃, 컬러, 폰트
  • 애니메이션 효과

UI는 눈에 보이는 디자인, UX는 보이지 않는 흐름과 느낌이라고 생각하면 이해하기 쉬워요.


🔄 UX vs UI 요약

항목 UX (User Experience)  UI (User Interface)
의미 사용자 경험 사용자 인터페이스
초점 기능 흐름, 사용 편의성 시각적 디자인, 인터랙션
예시 로그인 절차가 쉽고 명확함 로그인 버튼이 크고 눈에 띄는 색상
결과 전체적인 만족도 사용자의 첫인상

UX/UI 디자인


👩‍💻 프로그래밍에서 UX/UI는 어떻게 활용될까?

프로그래머가 UX와 UI를 잘 이해하면 다음과 같은 장점이 있어요:

✅ UX 관점

  • 기능의 흐름을 사용자의 입장에서 설계
  • 복잡한 절차를 단순화 (예: 회원가입 단계 축소)
  • 성능과 반응속도를 개선하여 쾌적한 사용감 제공

✅ UI 관점

  • HTML/CSS/JS로 시각적 요소를 세밀하게 구현
  • 프론트엔드 프레임워크(React, Vue 등)로 컴포넌트 기반 UI 구축
  • 애니메이션이나 반응형 웹 적용

개발자와 디자이너가 협업할 때 UX/UI 지식은 정말 큰 무기입니다!


🛠 추천 UX/UI 툴

도구  용도  특징
Figma UX/UI 디자인 클라우드 기반 협업, 디자인 → 프로토타입까지 가능
Adobe XD UI 디자인 인터랙션 설계에 강함
Sketch UI 디자인 macOS 전용, 디자이너 중심
Cursor AI AI 코딩툴 코드와 UI/UX 구현을 AI가 함께 도와줌 (코드+디자인 협업에 유용)
WordPress UI 기반 웹사이트 빌더 UX 고려한 웹페이지 구성, 비개발자도 쉽게 사용 가능
MCP(Microsoft Certified: Power Platform) UX에 강한 MS 앱 제작 폼 기반 UX/UI 구성, 비즈니스 앱에 최적화

 

 

1. 🧱 Layered Architecture (계층형 아키텍처)

✅ 정의

Layered Architecture는 소프트웨어를 기능에 따라 수평적인 계층(Layer)으로 분리하는 구조입니다. 일반적으로 Presentation Layer, Business Logic Layer, Data Access Layer 등의 계층으로 나뉩니다. 가장 대표적인 형태는 MVC(Model-View-Controller)입니다.

🌟 장점

  • 책임 분리 (Separation of Concerns): 각 계층이 맡은 역할이 명확해서 코드 관리가 쉬움.
  • 유지보수 용이: 특정 계층만 수정하면 되기 때문에 변경에 유연.
  • 테스트 용이: 각 계층 단위로 테스트 가능.

⚠️ 단점

  • 계층 간 의존성이 강해질 수 있음.
  • 성능 저하: 모든 요청이 모든 계층을 거쳐야 하는 경우 오버헤드 발생.
  • 유연성 부족: 특정 기능이 여러 계층에 걸쳐야 할 경우 설계가 복잡해짐.

📌 예시

  • MVC 패턴:
    • Model: 데이터 및 비즈니스 로직
    • View: 사용자 인터페이스
    • Controller: 사용자 입력 처리
  • 계층형 아키텍처

2. ⚡ Event-driven Architecture (이벤트 기반 아키텍처)

✅ 정의

Event-driven Architecture는 이벤트(Event)를 중심으로 구성된 아키텍처입니다. 컴포넌트 간에 직접적인 호출 없이, 이벤트 발행과 구독을 통해 비동기적으로 동작합니다.

🌟 장점

  • 높은 확장성: 이벤트 핸들러를 독립적으로 확장 가능.
  • 비동기 처리로 빠른 응답 가능.
  • 컴포넌트 간 결합도 낮음: 유연하고 유지보수 용이.

⚠️ 단점

  • 디버깅 어려움: 이벤트 흐름 추적이 복잡함.
  • 테스트 어려움: 이벤트 순서와 타이밍을 맞춰야 해서 테스트 복잡.
  • 에러 핸들링 어려움: 어디서 문제가 발생했는지 추적이 힘듦.

📌 예시

  • Kafka, RabbitMQ, AWS SNS/SQS
  • 쇼핑몰 주문 시스템: 주문 생성 → 이벤트 발생 → 결제/재고/알림 처리
  • 이벤트 기반 아키텍처

3. 🧩 Microkernel Architecture (플러그인 기반 아키텍처)

✅ 정의

Microkernel Architecture는 핵심 기능(Core System)과 확장 기능(Plugin)으로 나눠서 설계하는 방식입니다. 핵심 기능은 작고 안정적이며, 플러그인을 통해 기능을 유연하게 확장할 수 있습니다.

🌟 장점

  • 유연한 확장성: 필요한 기능만 플러그인 형태로 추가 가능.
  • 핵심 시스템 안정성 확보: 플러그인 문제로 전체 시스템이 영향을 받지 않음.
  • 빠른 배포 및 테스트: 플러그인 단위로 개발 가능.

⚠️ 단점

  • 플러그인 관리 복잡: 의존성 및 버전 충돌 가능성 있음.
  • 커뮤니케이션 비용 증가: 핵심과 플러그인 간 인터페이스 설계 필요.
  • 성능 이슈: 플러그인 수가 많아지면 로딩 및 실행 성능 저하 가능.

📌 예시

  • IDE (Eclipse, IntelliJ): 기본 에디터 + 플러그인 (Java, Python 등)
  • 브라우저: 크롬 확장 프로그램
  • 플러그인 기반 아키텍처

4. 🧬 Microservices Architecture (마이크로서비스 아키텍처)

✅ 정의

Microservices Architecture는 애플리케이션을 여러 개의 독립된 서비스로 나누어 개발하는 방식입니다. 각 서비스는 작고 독립적이며, 자신의 데이터와 비즈니스 로직을 가짐.

🌟 장점

  • 독립 배포 가능: 서비스 단위로 배포/스케일링 가능.
  • 유연한 기술 스택 사용: 서비스마다 다른 언어나 DB 사용 가능.
  • 장애 격리: 하나의 서비스 장애가 전체에 영향을 미치지 않음.

⚠️ 단점

  • 운영 복잡성: 서비스가 많아질수록 인프라, 배포, 모니터링 복잡.
  • 데이터 일관성 유지 어려움: 트랜잭션 관리가 어려움.
  • 네트워크 비용 증가: 서비스 간 통신 빈번.

📌 예시

  • Netflix, Amazon, 쿠팡 등 대규모 플랫폼
  • 쇼핑몰: 주문 서비스, 결제 서비스, 사용자 서비스 등 분리 운영
  • 마이크로서비스 아키텍처

5. 🏛️ Monolithic Architecture (모놀리식 아키텍처)

✅ 정의

모놀리식 아키텍처는 하나의 거대한 코드베이스 안에 모든 기능(프론트, 백엔드, DB 접근 등)이 포함된 구조입니다. 전통적인 웹 애플리케이션에서 많이 사용되었습니다.

🌟 장점

  • 개발/배포 단순: 하나의 빌드/배포로 끝남.
  • 성능 좋음: 내부 호출이기 때문에 네트워크 오버헤드 적음.
  • 초기 개발 속도 빠름: 간단한 프로젝트에 적합.

⚠️ 단점

  • 규모가 커지면 유지보수 어려움: 코드 변경 시 영향 범위 넓음.
  • 확장성 제한: 특정 기능만 확장하기 어려움.
  • 배포 리스크: 작은 변경에도 전체 시스템 재배포 필요.

📌 예시

  • 초기 스타트업 서비스 대부분
  • JSP 기반의 웹 애플리케이션
  • 모놀리식 아키텍처

✅ 마무리: 어떤 아키텍처를 선택할까?

아키텍처  확장성  복잡성  초기에 적합? 대규모에 적합?
Layered 낮음
Event-driven 높음 중~높음
Microkernel 중~높음
Microservices 최고 높음
Monolithic 낮음 낮음

 

개발자로서 알아야 할 전공과목

자료구조

  • 스택:
    • LIFO 구조로, 마지막에 추가된 데이터가 먼저 제거됨. 주로 함수 호출 스택이나 Undo 기능에 사용됨.
  • :
    • FIFO 구조로, 먼저 추가된 데이터가 먼저 제거됨. 프린터 작업 큐나 프로세스 스케줄링에 사용됨.
  • 연결리스트:
    • 동적 메모리를 사용하여 요소의 삽입과 삭제가 용이함. 노드와 포인터로 구성됨.
  • 배열:
    • 고정된 크기와 인덱스를 통해 빠른 접근이 가능. 메모리 공간이 연속적임.
  • 트리:
    • 계층적 구조로, 특히 이진 트리는 탐색 효율이 높음. 이진 탐색 트리, AVL 트리 등 다양한 형태가 있음.
  • :
    • 완전 이진 트리 구조로, 우선순위 큐를 구현할 때 사용됨. 최소 힙과 최대 힙으로 나뉨.
  • 그래프:
    • 노드와 간선으로 구성되며, 방향 그래프와 무방향 그래프가 있음. 다양한 탐색 알고리즘(: BFS, DFS, 다익스트라) 사용 가능.
  • 해시테이블:
    • -값 쌍으로 데이터를 저장하며, 해시 함수를 사용하여 빠른 검색을 제공. 해시 충돌 해결 방법(체이닝, 오픈 어드레싱 등)도 중요함.

운영체제

  • CPU 구조:
    • ALU, 레지스터, 캐시 메모리 등을 포함. 각 구성요소의 역할 이해 필요.
  • 스케줄링 알고리즘:
    • FCFS(선입선출), SJF(최단 작업 우선), 라운드 로빈, SRF(Shortest Remaining First), 다단계 큐의 장단점 이해 필요.
  • 프로세스 상태:
    • 준비, 실행, 대기, 종료 상태와 상태 전이의 이해가 중요.
  • 쓰레드:
    • 경량 프로세스로, 멀티쓰레딩의 이점과 단점을 이해해야 함.
  • 가상 메모리:
    • 물리 메모리와 논리 메모리 간의 매핑 및 페이지 테이블 사용에 대한 이해 필요.
  • 메모리 할당법:
    • 연속 할당, 분할 할당, 페이지 교체 알고리즘(FIFO, LRU, OPT)의 이해.

알고리즘

  • 정렬 알고리즘:
    • 각 알고리즘의 시간 복잡도와 공간 복잡도를 비교.
  • 탐색 알고리즘:
    • BFS, DFS의 원리 및 사용 사례를 잘 이해해야 함. 다익스트라 알고리즘은 그래프의 최단 경로 문제 해결에 사용됨.

디자인 패턴

  • 싱글톤 패턴:
    • 인스턴스를 하나만 생성하고 전역 접근을 제공.
  • 전략 패턴:
    • 알고리즘을 캡슐화하여 동적으로 선택할 수 있게 함.
  • 옵저버 패턴:
    • 주체 객체의 상태 변화에 따라 관찰자에게 통지하는 패턴.
  • MVC 패턴:
    • Model-View-Controller 구조로, 분리된 관심사를 통해 코드 관리 용이.
  • MVP 패턴:
    • Model-View-Presenter 구조로, 사용자 인터페이스와 로직을 분리.
  • 프록시 패턴:
    • 객체에 대한 접근을 제어하는 대리 객체를 제공.

네트워크

  • 서버 개발자, 데브옵스, 인프라 개발자 역할:
    • 각 역할의 책임과 필요한 기술 스택을 이해.
  • TCP/IP 4계층:
    • 애플리케이션, 전송, 인터넷, 네트워크 접근 계층의 이해.
  • OSI 7계층:
    • 각 계층의 기능 및 역할.
  • 네트워크 토폴로지:
    • 스타, , 버스, 메시와 같은 구조의 이해.
  • 패킷 교환 방식:
    • 데이터 전송 방법과 그 장단점.
  • 브라우저 동작 원리:
    • 요청-응답 과정, HTML, CSS, JavaScript의 역할.
  • DNS 서버:
    • 도메인 이름을 IP 주소로 변환하는 과정.
  • 로드 밸런서:
    • 서버 부하를 분산시키는 장치의 역할과 필요성.

데이터베이스

  • 데이터베이스 설계 및 관리:
    • 데이터베이스 설계 및 관리: 데이터베이스의 구조를 설계하고, 데이터를 저장하고 관리하는 방법을 학습.
    • 정규화, 비정규화, 스키마 설계, 트랜잭션 관리 등. 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)의 차이도 중요.

보안

  • 보안:
    • 해킹, SQL 인젝션, XSS 등의 공격을 방어하는 방법을 학습
  • 시스템 보안:
    • 시스템 해킹, 악성코드 등의 공격을 방어하는 방법을 학습
  • 네트워크 보안:
    • 네트워크 해킹, 방화벽, 침입 탐지 시스템(IDS) 등의 보안 장비를 이해하고 활용하는 방법

 



+ Recent posts