반응형

CS 12

Monolith vs Microservice와 MSA 개념 및 특징

Monolith Architecture란? 모든 요소를 하나의 커다란 소프트웨어에 포함하여 개발하는 방법으로, 데이터베이스 로직, 비즈니스 로직, 그리고 프런트엔드 처리까지 모두 단일한 애플리케이션으로 구성되어 작동하고, 이를 패키징하여 서버에 배포하는 방식을 의미합니다. Microservice Architecture란? 애플리케이션을 작은, 독립적인 서비스로 분리하여 개발하고 운용하는 방법으로, 전체 애플리케이션을 여러 개의 작은 마이크로서비스로 분리하고 각 마이크로서비스는 자체적인 비즈니스 로직을 갖고 있으며, 독립적으로 개발, 배포, 확장이 가능하다. 이러한 마이크로서비스는 서로 네트워크를 통해 통신하며, 작은 서비스들이 모여 전체 애플리케이션을 구성하게 된다. 1. Monolith Architec..

CS 2023.07.20

오버로딩(Overloading)과 오버라이딩(Overriding)이란?

오버로딩(Overloading) 오버로딩(overloading)이란? 같은 이름을 가진 메서드를 여러 개 두는 것을 말한다. 메서드의 타입, 매개변수의 유형, 개수 등으로 여러개를 둘 수 있으며 컴파일 중에 발생하는 정적 다향성이다. 1. Java 오버로딩 예 class Person { public void eat(String a) { System.out.println(" I eat "+ a); } public void eat(String a, String b ) { System.out.println(" I eat "+ a + " and " + b); } } public class CalculateArea { public static void main(String[] args) { Person a = n..

CS 2023.02.01

객체지향 프로그래밍(OOP)란?

OOP 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활요하는 방식을 말한다. OOP는 설계에 많은 시간이 소요되며 처리속도가 다른 프로그래밍 패러다임에 비해 상대적으로 느리다. 프로그래밍 패러다임이란? 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 1. OOP의 예 배열에서 최댓값을 찾는 로직을 OOP를 적용 const ret = [1,2,3,4,5,11,12] class List { constructor(list) { this.list = list this.mx = list.reduce((max, num) => num > max ? num :max, 0) } getMax() { return t..

CS 2023.01.31

MVVM 패턴(Model, View, ViewModel)이란?

MVVM MVVM 패턴은 MVC의 C에 해당하는 컨트롤러가 뷰모델로 바뀐 패턴이다. 1. 장단점 MVVM 패턴은 MVC 패턴과는 다르게 커맨드와 데이터 바인딩을 가지고 있다. 뷰와 모델 사이의 양방향 데이터 바인딩을 지원한다. UI를 별도의 코드 수정 없이 재사용할 수 있다. 단위 테스트하기 쉽다. 커맨드란? 여러 가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게 하는 기법 데이터 바인딩이란? 화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법으로, 뷰모델을 변경하면 뷰가 변경된다. 2. 모델(Model) 화면 표현하는데 필요한 데이터를 관리하며 사용자가 입력한 데이터를 저장하거나, 서버로 부터 받은 데이터를 저장합니다. 데이터 변경 시 View Model에게 변경 알림을 전송합..

CS 2023.01.27

MVP 패턴(Model, View, Presenter)이란?

MVP MVP패턴은 MVC 패턴으로부터 파생되었으며 MVC에서 C에 해당하는 컨트롤러가 프레젠터(presenter)로 교체된 디자인 패턴이다. 뷰와 프레젠터는 1:1 관계이기 때문에 MVC 패턴보다 더 강한 결합을 지닌 디자인 패턴이다. 1. 장단점 MVC와는 다르게 코드가 깔끔해지고, Model과 View의 결합도를 낮추면, 새로운 기능 추가 및 변경을 할 때마다 관련된 부분만 코드를 수정하면 되기 때문에 확장성이 개선된다. UI, DATA 각각 파트를 나눠어서 해야 할 일이 명확해지고, 쉽고 빠른 코딩이 가능하다. 애플리케이션이 복잡해질수록 View와 Presenter 사이의 의존성이 강해지는 문제가 있다. MVC의 Controller처럼 추가 비즈니스 로직에 집중되는 경향이 있다. 2. 모델(Mod..

CS 2023.01.26

MVC 패턴(Model, View, Controller)이란?

MVC MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다. 1. 장단점 애플리케이션 구성 요소를 세 가지 역할로 구분하여 각각의 구성 요소에만 집중해서 개발할 수 있다. 재사용성과 확장성이 용이하다. 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다는 단점이 있다. 2. 모델(Model) 모델(Model)은 애플리케이션의 데이터인 데이터베이스, 상수, 변수 등을 뜻한다. 모델 예 사각형 모양의 박스 안에 글자가 들어있다면 그 사각형 모양의 박스 위치정보, 글자 내용, 글자 위치, 글자 포맷에 관한 모든 정보를 가지고 있어야 한다. 이러한 정보를 담겨있는 것을 모델이라 한다. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거..

CS 2023.01.23

프록시 패턴(Proxy Pattern) 이란?

프록시 패턴 프록시 패턴(proxy patter)은 대상 객채에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 프록시 객체란? 프록시 객체는 디자인 패턴 중 하나인 프록시 패턴이 녹아들어 있는 객체이다. 2023.01.09 - [JavaScript] - 프록시(Proxy) 객체 JavaScript에서 사용 방법(옵저버 패턴) 1. 프록시 패턴 구조 프록시 패턴을 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 프록시 패턴은 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다. 2. 프록시 서버 프록시 서버는 서버와 클라이언트 사이에서 클라이언트 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해..

CS 2023.01.20

프로세스 메모리(스택, 힙, 데이터 영역, 코드 영역) 구조 개념 및 특징

프로세스 메모리  운영체제는 프로세스마다 각각 독립적인 메모리 영역을 할당해 주기 때문에 프로세스간 영향을 받지 않고, 작업을 수행할 수 있다. 기본적으로 다른 프로세스의 변수나 자료에 적급할 수 없지만, IPC나 공유 메모리 등의 통신 기법을 사용하면 접근할 수 있다.  스택은 위 주소부터 할당되고, 힙은 아래 주소부터 할당된다.스택과 힙에 저장되는 함수는 객체는 동적으로 Run 타임 때 계속 늘어날 수 있기 때문에 메모리 사용량이 늘어난다.   1. 스택(Stack)동적인 특징을 가진다.지역변수, 매개변수, 함수가 저장된다. 함수의 호출과 함께 할당되며 함수의 호출이 완료되면 소멸한다.컴파일 시에 크기가 결정된다.함수가 함수를 재귀적으로 호출하게 되면 동적으로 크기가 늘어날 수 있는데, 이때 힙과 스..

CS 2023.01.13

옵저버(Observer ) 패턴 개념 및 구현 방법(Java, JavaScript)

Observer Pattern 옵저버 패턴(Observer Pattern)이란? 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 여기서 주체란 객체 상태 변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 ‘추가 변화 사항’이 생기는 객체들을 의미한다. 1. 옵저버 패턴 구조 1-1) 객체와 주체가 분리 1-1) 객체와 주체가 합쳐짐 2. 옵저버 패턴의 사용 예 2-1) 옵저버 패턴을 활용한 서비스로는 트위터가 있다. 내가 어떤 사람인 주체를 ‘팔로우’했다면, 주체가 포스팅을 올리게 되면 알림이 ‘팔로워’에게 간다. 2-2) 옵저버 패턴은 주로 이벤트 ..

CS 2023.01.10

알고리즘 BigO(시간 복잡도, 공간 복잡도) 개념 및 예제

빅오란? 빅오(BigO)는 대략적으로 숫자를 세는 공식적인 표현입니다. 입력된 내용이 늘어날수록 알고리즘에 실행 시간이 어떻게 변하는지 설명하는 공식적인 방식이다. 즉, 어떤 함수의 입력 값이 늘어나거나 함수의 실행 시간이 변하는 관계 입력의 크기와 실행시간의 관계를 말한다. 1. BigO의 예 시간 복잡도 시간 복잡도란? 입력이 커질수록 알고리즘의 실행 속도가 어떻게 바뀌는지 표현 1-1) O(1) : 상수 /* n의 값이 늘어나도 실행 되는 시간에는 아무런 영향을 받지 않는다. 시간복잡도 O(1) */ function addSec(n) { return n * (n + 1 ) / 2; } O(1) 상수 : n(입력값)이 커져도 실행 시간에 아무런 영향도 받지 않을 경우(항상 상수) 나타내는 표현 1-2..

CS 2023.01.05
반응형