목차
- API (Application Programming Interface)
- 클라우드 컴퓨팅
- 서버 운영 방식
- 클라우드 서비스 모델
- 컨테이너와 도커
- CI/CD
- 객체지향 프로그래밍 기초
- 프로그래밍 핵심 개념
- 소프트웨어 설계 패턴
API
API(Application Programming Interface)는 소프트웨어 간의 통신을 위한 인터페이스입니다.
주요 특징
- 컴퓨터 간 통신을 위한 중계 계층 역할
- HTTP/HTTPS 프로토콜과 GET, POST 등의 메서드를 통한 통신 방식 정의
- 서비스 구현 세부사항을 숨기고 필요한 기능만 노출
- 프론트엔드와 백엔드 간의 효율적인 통신 지원
API의 장점
- 구현 세부사항 은닉
- 명확한 인터페이스 제공
- 유지보수 용이성
- 재사용성 향상
- 비즈니스 로직 변경 시 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)
- 컨테이너 기술의 사실상 표준
- 간편한 애플리케이션 패키징과 배포
- 개발-테스트-운영 환경의 일관성 보장
도커 작업 흐름
- Dockerfile 작성 (컨테이너 정의)
- 도커 이미지 빌드
- 도커 컨테이너 실행
CI/CD
CI (Continuous Integration)
- 지속적인 코드 통합
- 자동화된 빌드와 테스트
- 코드 품질 유지
CD (Continuous Delivery/Deployment)
- 지속적인 배포
- 자동화된 릴리스 프로세스
- 신속한 서비스 제공
주요 구성 요소
테스트 자동화
- 단위 테스트
- 통합 테스트
- E2E 테스트
배포 파이프라인
- 코드 병합
- 빌드 자동화
- 테스트 실행
- 배포 자동화
도구
- Jenkins (기업용)
- GitHub Actions (개인/소규모 프로젝트)
- GitLab CI/CD
- CircleCI
객체지향 프로그래밍 기초
클래스와 객체
- 클래스: 객체의 설계도
- 객체: 클래스의 인스턴스
- 인스턴스: 메모리에 할당된 객체
Static 키워드
- 클래스 레벨의 멤버 정의
- 공유 자원 관리
- 메모리 효율성 고려 필요
프로그래밍 핵심 개념
추상화
- 복잡한 시스템의 핵심 기능 추출
- 사용자 친화적 인터페이스 제공
- 시스템 복잡도 감소
컴파일러와 인터프리터
- 고급 언어를 기계어로 변환
- 실행 시점의 차이
- 각각의 장단점 존재