oop
- 객체지향 프로그래밍으로 현실에 있는 사물의 속성과 기능을 프로래그밍하는 기법
- 상속, 캡슐화, 정보은닉, 다형성을 제공해 재사용성과 유지 보수성이 높음
oop의 5대 원칙
- SRP(단일 책임 원칙) : 객체는 하나의 책임만 가져야 함
- OCP(개방 폐쇄 원칙) : 확장에 유연하며 변경에는 닫혀 있어야 함
- DIP(의존성 역전 원칙) : 구체화(구현 클래스) 보다는 추상화(인터페이스)에 의존해야 함
- LSP(리스코프 치환 원칙) : 상위 타입 객체를 하위 타입으로 변경해도 프로그램은 일관되게 동작해야 함
- ISP(인터페이스 분리 원칙) : 이용하지 않는 메소드에 의존하지 않게 인터페이스를 분리해야 함
절차지향 프로그래밍 vs 객체지향 프로그래밍
절차지향 프로그램
- 컴퓨터 처리 구조와 유사해 처리 속도가 빠른 프로그래밍 기법
- C언어가 대표적
- 코드의 순서가 중요해 바뀌면 동일한 결과가 보장되기 어려움
객체지향 프로그래밍
- 현실의 사물을 객체로 모델링해 프로그래밍하는 기법
- Java가 대표적
- 캡슐화, 상속, 다형성 등과 같은 기법을 제공
함수형 프로그래밍
- 부수효과가 없는 순수 함수를 이용한 기법
- 부수 효과가 없다는 것은 데이터의 값을 변경하지 않고 객체 필드를 설정하는 작업을 하지 않는 함수
- 불변 데이터, 함수가 일급 시민이라는 특징이 존재
메모리 구조

- 코드 영역 : '실행할 프로그램의 코드가 저장되는 영역' 프로그램을 실행하면 OS가 HDD > 메모리로 코드를 로드, CPU는 코드 영역에 저장된 명령어를 하나씩 처리
- 데이터 영역 : '프로그램의 전역 변수와 정적 변수 저장 영역' 프로그램 시작에 생성되어 종료시 소멸
- 힙 영역 : '개발자가 직접 관리할 수 있는 메모리 영역, Java에서는 GC 대상' 이 공간에 메모리를 할당하는 것을 동적 할당이라고 함.
- 스택 영역 : '함수의 호출과 같이 할당되어 지역 변수와 매개 변수의 저장 영역' 함수의 호출 정보를 스택 프레임이라 함
프레임워크와 라이브러리 차이
- 프레임워크 : 전체적인 흐름을 프레임워크가 제어 (대표적으로 스프링)
- 라이브러리 : 개발자가 흐름을 제어해 필요시 가져다 사용.
동기와 비동기
동기
- 요청을 보내 실행이 끝나면 다음 동작을 처리하는 방식
- 순서대로 진행되어 제어가 쉬움
- 여러 요청의 동시 처리가 불가해 효율이 떨어짐
ex) 콜센터 직원이 일하는 방식 진행중인 통화가 끝나야 다음 통화가 가능
비동기
- 요청의 처리 여부와 상관없이 다음 요청을 실행하는 방식
- 작업 완료까지 대기가 없어 효율적인 자원 사용 가능
- 완료 작업의 결과 제어가 어려움
ex) 한 사람에게 이메일을 보냈을 때 답변 여부에 상관 없이 이메일을 다시 보낼 수 있다.
SQL Injection
- 공격자가 악의적인 의도를 가지고 SQL 구문을 삽입해 원하는 SQL을 실행하는 웹해킹기법
도커와 쿠버네티스
- 도커는 소프트웨어 환경의 일관서 문제 해결을 위해 등장
- 쿠버네티스는 도커로 구동되는 컨테이너 관리를 위한 기술
도커의 장단점
장점
- 높은 이식성: 이미지 기반으로 동일한 환경을 제공해 환경 차이로 발생하는 문제를 방지
- 높은 확장성: 독립 환경의 컨테이너에서 실행되어 여러 컨테이너의 조합 가능
단점
MSA
- 시스템 구성요소가 한 프로젝트에 담긴 모놀리식 아키텍쳐의 한계점 극복
- 1개의 시스템을 독립적으로 배포가능한 별개의 서비스로 분할
- 각 서비스는 API 통신으로 데이터를 교환해 1개의 큰 서비스를 구성

장점
- 일부 서비스에 장애가 발생해도 전체 서비스에 영향이 가지 않음
- 각 서비스는 서로 다른 언어와 프레임워크로 구성될 수 있음
- 서비스 확장에 용이
단점
- 서비스 분리로 테스트, 트랜잭션 처리가 어려움
- 각 서비스 간의 API 통신 비용 발생
- 서비스 간의 연속적인 호출로 디버깅 및 에러 트레이싱이 어려움
출처
https://mangkyu.tistory.com/88
좋은 글 감사합니다!