전체 글(205)
-
헥사고날 아키텍처 설계와 구현(1)
1. 아키텍처# 모놀리식 아키텍처 (Monolithic Architecture, MA)하나의 코드 베이스에 여러 비즈니스 기능을 수행하는 전통적인 소프트웨어 개발 모델단일 애플리케이션 내에 모든 로직이 통짜로 들어가 있는 구조간결한 대신 서비스 규모가 커질수록 단점이 드러남 # 마이크로서비스 아키텍처 (MicroService Architecture, MSA)서비스를 작게 쪼개서 각각의 독립적 서비스로 비즈니스 기능을 수행하는 소프트웨어 개발 모델서비스를 작게 쪼갠 덕에 개발 구조가 유연하고 민첩함대신, 쪼개진 서비스들 간의 통신 비용, 인프라 비용, 전체적인 복잡성 증가등의 단점이 있음 # 소프트웨어 설계의 필요성사실 소프트웨어 설계가 개판이어도 돈 버는데는 아무 지장이 없을 수 있음게다가 설계에 너..
2024.12.08 -
[실전자바] 컬렉션 프레임워크
1. 배열# 배열특징여러 값을 담기 위한 가장 기본적인 자료구조배열의 길이는 최초 생성시 결정되며, 이후엔 길이 변경이 불가능배열 길이 변경이 불가능하다보니 요소 추가도 불편해서 주료 리스트 자료구조 사용함조회 O(1), 검색 O(N), 추가 O(N), 삭제 O(N)배열 관련 메서드 ㄴ 배열 출력은 Arrays.tostring(), Arrays.deepToString() (2차원 이상) ㄴ 배열 정렬은 Arrays.sort() ㄴ 배열 조회는 Arrays.binarySearch() (코테용) ㄴ 배열 복사는 Arrays.copyOf(), System.arrayCopy(), 2. 리스트(List)# 리스트중복과 관계없이 요소들을 순차적으로 담아내는 자료구조배열과 비슷하지만 엄연히 다른 개념배열과 달리..
2024.08.24 -
[실전자바] 각종 클래스
1. String 클래스 # 사용이유원래라면 문자'열'은 기본형 char를 배열로 만들어 char[] 형태로 보관해야한다그러나 char[]는 사용도 불편하고 관리도 어렵다때문에 문자열을 보다 쉽게 처리하기 위해 도입됨덕분에 지금의 String str = "abc" 같은 간단한 선언이 가능해진 것 # 클래스 구조String 클래스는 내부적으론 char[] 를 사용해 문자열을 보관함즉, 사람이 더 쓰기 편하게 만들었을뿐 근본적으론 문자열을 다루기 위해 char[]를 사용하는건 그대로인 것* Java9 버전 이후부턴 char[] → byte[] 배열에 보관(메모리 효율성) # 특이한 선언과 연산String 클래스로 만들어진 값은 원칙적으론 참조형이다따라서 변수 생성시 String str = new String..
2024.08.04 -
Controllers
Controllers 컨트롤러는 클라이언트의 request를 핸들링하여 response를 리턴하는 기능을 담당한다. 라우팅 메커니즘이 어떤 컨트롤러가 어떤 request를 담당할지 컨트롤하는데, 각 컨트롤러는 통상 하나 이상의 라우트를 가지며 각 라우트가 각각 다른 작업을 수행한다. 기본적인 컨트롤러 생성을 위해 클래스와 데코레이터를 사용한다. 데코레이터는 필요한 메타데이터를 클래스와 연동시켜주며, 네스트로 하여금 라우팅 맵(각각의 request와 이를 담당하는 컨트롤러를 묶어내는 것)을 그려내도록 한다위 프로세스는 아래의 과정을 거쳐 동작하게 된다. HINT validation 기능이 내장된 CRUD 컨트롤러를 쉽게 만들어주는 CLI 명령어도 있다. - nest g resource [ name ] Ro..
2023.07.13 -
[Routing] Loading UI and Streaming
Next 13 버전에서 새로운 파일 컨벤션 중 하나인 loading.js를 도입했는데. 리액트 서스펜스와 함께 로딩 UI를 쉽게 구현할 수 있도록 도와준다. 이 컨벤션으로 라우트 세그먼트의 데이터가 로드되는 동안 로딩 상태를 보여줄 수 있고, 로드된 데이터의 렌더링이 끝나면 자동으로 화면을 전환시킬 수 있다. 1. Instant Loading State Next.js 공식문서를 보면 즉각적인 로딩 상태Instant Loading State란 말이 계속 등장하는데, 이는 페이지 탐색 간 보이는 fallback UI를 말한다. 로딩 UI는 자유롭게 만들면 되는데 스켈레톤이나 스피너, 혹은 포토 커버나 제목 같은 것들을 로딩 표시기로써 pre-render 할 수 있다. 로딩 UI는 유저가 앱이 제대로 동작하고..
2023.05.07 -
[Next 13] React Essentials
Next.js는 리액트 기반의 프레임워크이므로, 리액트를 잘 알아야 제대로 쓸 수 있다. 특히 서버 컴포넌트 같은 새로 도입된 기능들을 제대로 이해하고 있어야 올바른 구현이 가능하므로 이에 대해 알아보자. 1. 서버 컴포넌트 과거 리액트가 등장하여 UI 구축 방식의 변화를 가져온 것처럼, 리액트 서버 컴포넌트는 서버와 클라이언트를 활용하는 하이브리드 애플리케이션 구축에 대하여 새로운 사고 모델을 도입하였다. 이제 리액트는 클라이언트 사이드에서 전체 애플리케이션을 렌더링 하던 과거와 달리, 컴포넌트를 각 목적에 따라 어디에서 렌더링 할지 선택할 수 있게 되었다. 예를 들어, 아래 그림과 같은 페이지가 있다고 해보자. 페이지를 컴포넌트 단위로 쪼개보면 다수의 컴포넌트는 인터렉티브하지 않다. 이 경우 서버 컴..
2023.05.06