jundev
개발
jundev
전체 방문자
오늘
어제
  • 분류 전체보기 (37)
    • 생각 (0)
    • 블록체인 (3)
      • 책 (0)
      • 블록체인개론 (0)
      • 논문 (1)
      • 기술 (2)
    • 개발 (6)
      • JavaScript (1)
      • Java (9)
      • SpringBoot (1)
      • Mysql , SQL (4)
      • Git (1)
      • Spring (0)
    • CS (7)
      • 컴퓨터구조 (3)
      • 운영체제 (1)
      • 자료구조 (1)
      • 알고리즘 (1)
      • 데이터베이스 (0)
    • 프로젝트 (3)
      • 야구어플 (2)
      • 스테이블코인 결제 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

티스토리

hELLO · Designed By 정상우.
jundev

개발

CS

개발 기초 지식

2025. 7. 24. 15:24

목차

  • API (Application Programming Interface)
  • 클라우드 컴퓨팅
  • 서버 운영 방식
  • 클라우드 서비스 모델
  • 컨테이너와 도커
  • CI/CD
  • 객체지향 프로그래밍 기초
  • 프로그래밍 핵심 개념
  • 소프트웨어 설계 패턴

API

API(Application Programming Interface)는 소프트웨어 간의 통신을 위한 인터페이스입니다.

주요 특징

  • 컴퓨터 간 통신을 위한 중계 계층 역할
  • HTTP/HTTPS 프로토콜과 GET, POST 등의 메서드를 통한 통신 방식 정의
  • 서비스 구현 세부사항을 숨기고 필요한 기능만 노출
  • 프론트엔드와 백엔드 간의 효율적인 통신 지원

API의 장점

  1. 구현 세부사항 은닉
  2. 명확한 인터페이스 제공
  3. 유지보수 용이성
  4. 재사용성 향상
  5. 비즈니스 로직 변경 시 API 인터페이스 유지 가능

클라우드 컴퓨팅

가상화 기술

가상화는 물리적 컴퓨팅 자원을 논리적으로 분할하여 사용하는 기술입니다.

주요 특징

  • 하나의 물리적 서버에서 여러 가상 머신 운영 가능
  • 자원의 효율적인 분배와 활용
  • 유연한 확장성과 관리 용이성

실제 사용 예시

  • Parallels나 VMware를 통한 맥북에서의 윈도우 운영
  • 클라우드 서비스에서의 가상 서버 인스턴스 운영

서버 운영 방식

온프레미스 (On-Premises)

  • 자체 데이터센터나 서버실에서 직접 서버 운영
  • 완전한 제어권과 보안성
  • 초기 투자비용이 높고 유지보수 부담

오프프레미스 (Off-Premises)

  • AWS, GCP 등 클라우드 서비스 활용
  • 탄력적인 자원 운영
  • 초기 비용 절감과 빠른 서비스 구축

클라우드 서비스 모델

IaaS (Infrastructure as a Service)

  • 가상화된 컴퓨팅 자원 제공
  • 사용자가 직접 인프라 구성
  • 예시: AWS EC2, Google Compute Engine

PaaS (Platform as a Service)

  • 개발 플랫폼 환경 제공
  • 인프라 관리 없이 애플리케이션 개발에 집중
  • 예시: Heroku, Google App Engine

SaaS (Software as a Service)

  • 완성된 소프트웨어 서비스 제공
  • 별도 설치 없이 웹에서 바로 사용
  • 예시: Notion, Google Workspace

컨테이너와 도커

컨테이너 기술

  • 애플리케이션과 의존성을 패키징
  • 일관된 실행 환경 제공
  • 가볍고 빠른 배포 가능

도커 (Docker)

  • 컨테이너 기술의 사실상 표준
  • 간편한 애플리케이션 패키징과 배포
  • 개발-테스트-운영 환경의 일관성 보장

도커 작업 흐름

  1. Dockerfile 작성 (컨테이너 정의)
  2. 도커 이미지 빌드
  3. 도커 컨테이너 실행

CI/CD

CI (Continuous Integration)

  • 지속적인 코드 통합
  • 자동화된 빌드와 테스트
  • 코드 품질 유지

CD (Continuous Delivery/Deployment)

  • 지속적인 배포
  • 자동화된 릴리스 프로세스
  • 신속한 서비스 제공

주요 구성 요소

  1. 테스트 자동화

    • 단위 테스트
    • 통합 테스트
    • E2E 테스트
  2. 배포 파이프라인

    • 코드 병합
    • 빌드 자동화
    • 테스트 실행
    • 배포 자동화

도구

  • Jenkins (기업용)
  • GitHub Actions (개인/소규모 프로젝트)
  • GitLab CI/CD
  • CircleCI

객체지향 프로그래밍 기초

클래스와 객체

  • 클래스: 객체의 설계도
  • 객체: 클래스의 인스턴스
  • 인스턴스: 메모리에 할당된 객체

Static 키워드

  • 클래스 레벨의 멤버 정의
  • 공유 자원 관리
  • 메모리 효율성 고려 필요

프로그래밍 핵심 개념

추상화

  • 복잡한 시스템의 핵심 기능 추출
  • 사용자 친화적 인터페이스 제공
  • 시스템 복잡도 감소

컴파일러와 인터프리터

  • 고급 언어를 기계어로 변환
  • 실행 시점의 차이
  • 각각의 장단점 존재
    jundev
    jundev

    티스토리툴바