1️⃣ CRUD
- RestAPI (REpresentational State Transfer API)
어떤 자원에 대해 CRUD(Create, Read, Update, Delete)를 위해
URI로 GET, POST, PUT, DELETE 등과 같은 HttpMethod를 통해 요청을 보내며
요청을 위한 자원은 특정한 형태로 표현됩니다
- 프레임워크 vs 라이브러리 비교
프레임워크와 라이브러리의 차이점은 제어 흐름에 대한 주도건이 누구에게/어디에 있는가로 나뉜다
프레임워크는 전체적인 흐름을 쥐고 있다.
개발자는 전체적인 흐름 안에서 라이브러리에 대한 흐름을 쥐고 있다.
개발자의 제어권을 프레임워크로 넘김으로써 신경쓸 것을 줄일 수 있다
-> 이를 제어의 역전 (Inversion of Control)이라고 한다.
2️⃣ MVC(Model View Controller) 디자인패턴

Model
어떠한 동작을 수행하는 코드
View
모델에게 질의해 모델로부터 값을 가져와 사용자에게 보여주기
Controller
사용자 요청에 맞는 데이터를 Model에 요청, 데이터를 View에 반영
MVC 장점
코드의 재사용성 및 확장성에 용이하여 서비스 유지보수 및 테스트에 용이하다.
3️⃣ OOP(객체지향)
- 객체지향의 특징
- 상속
부모 클래스에 정의된 변수 및 메서드를 자식 클래스에서 상속받아 사용하는 것
- 다형성
다양한 형태로 표현이 가능한 구조를 말한다.
- 추상화
클래스들의 공통적인 특성(변수, 메소드)들을 묶어 표현하는 것
- 캡슐화
데이터와 코드의 형태를 외부로부터 알 수 없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐 형태로 만드는 방법
-
객체지향의 원칙 (SOLID)
단일 책임 원칙 (Single Responsiblity Principle)
- 하나의 클래스는 하나의 책임만 가져야 한다.
- 클래스는 책임을 캡슐화 해야한다.
개방-폐쇄 원칙 (Open Closed Principle)
- 확장에는 열려있고 수정에는 닫혀있어야 한다.
-> 기존의 코드를 변경하지 않으면서( Closed), 기능을 추가할 수 있도록(Open) 설계가 되어야 한다는 원칙을 말한다.
리스코프 치환 원칙 (Liskov Substitution Principle)
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙이다
인터페이스 분리 원칙 (Interface Segregation Principle)
- 한 클래스는 자신이 사용하지않는 인터페이스는 구현하지 말아야 한다
의존 역전 원칙 (Dependency Inversion Principle)
- 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존하라는 것이다. 한마디로 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺으라는 것이다.
- 객체지향의 장단점
장점
- 다른 클래스를 가져와 사용할 수 있고, 상속받을 수 있어 코드의 재사용성 증가
- 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있어 신뢰성을 확보 가능
- 클래스 단위로 모듈화가 가능하여, 대형 프로젝트에 적합.
- 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수가 용이함.
단점
- 처리 속도가 상대적으로 느림
- 객체가 많으면 용량이 커짐
- 설계 시 많은 노력과 시간이 필요
4️⃣ TDD(테스트 주도 개발)
작은 단위위에 테스트케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다.

사진출처: https://wooaoe.tistory.com/33 [개발개발 울었다:티스토리]
eXtream Programming(XP)
미래에 대한 예측을 최대한 하지 않고,
지속적으로 프로토타입을 완성하는 애자일 방법론 중 하나이다.
이 방법론은 추가 요구사항이 생기더라도, 실시간으로 반영할 수 있다.
eXtream Programming에 중점을 둔 단순한 설계를 중요시 한다.