모놀리식 아키텍처(Monolithic Architecture, MA)개념하나의 통합된 코드 베이스로 여러 비즈니스 기능을 수행하는 전통적인 소프트웨어 개발 모델단일 애플리케이션 내에 서비스의 모든 로직이 통으로 들어가 있다. (like 맥가이버 칼) 장점 👍🏻간결하다.중앙 집중된 구조이기 때문에 분산된 애플리케이션에 비해 엔드 투 엔드 테스트 를 더 빠르게 수행할 수 있다.단일 애플리케이션에 비즈니스 로직, UI, 콘텐츠 등 모든 구성 요소를 이루는 코드가 들어있기 때문에 디버깅하기 간편하다. 소규모 애플리케이션이라면 단순하면서 견고한 구조를 만들기 좋다.*엔드 투 엔드 테스트(End-to-End, E2E) : 사용자 관점에서 애플리케이션의 흐름을 처음부터 끝까지 테스트하는 것단점 👎🏻단일 애플리..
전체 글
DO(Entity)? DTO?Domain Object (= Entity)= DB 데이터 원본setter를 가질 수 없는 것은 아니다.수정 용도 등 꼭 필요로 하는 setter는 가질 수 있다.ex. set *** , update **** (매개변수 1~2개 +@)DTO(Data Transfer Object)= Domain Object 사본 추가 필드 혹은 제외 필드를 가질 수 있다.계산된 데이터를 가질 수 있어야 한다.데이터 변환도 일어날 수 있다. setter를 가질 수 있다. FE ~ DB 로 데이터 전송 과정 중 DTO DO 변환 위치 * 개인의 주관적인 생각입니다. 다르게 생각하시는 분은 댓글 남겨주시면 감사하겠습니다 :) Service 로직에서 변환해야한다고 생각한다.그 이유는 아래와 같..
문제 상황ResponseEntity가 아닌 제네릭을 이용한 공통 리스폰스 객체를 만들어 보내려 하였다. 전체 코드 더보기더보기 @PostMapping("/join") public ApiResult join(@RequestBody Member member) throws DuplicateException { log.info(member.toString()); try { if (isDuplicateId(member)) { throw new DuplicateException("중복된 ID 입니다."); } } catch (DuplicateException e) { return ..
Jackson 라이브러리 [Spring] Jackson 라이브러리 이해하기.안녕하세요. 오늘은 Spring 프레임워크에 빼놓을 수 없는 라이브러리중 하나인 Jackson에 대해 간단하게 포스팅 합니다.주의!! 해당 포스팅은 Jackson의 라이브러리 2.9.7 버전을 다룹니다.또한, 프로젝mommoo.tistory.comJackson 라이브러리의 필요성API 통신을 하다 보면 대부분 JSON 형태로 데이터를 주고받는다.이때, FE와 BE가 서로 파라미터 작성 방식(카멜케이스, 스네이크케이스) 또는 파라미터 명이 다를 경우 데이터가 원활하게 파싱이 안될 수 있다.더보기카멜 케이스(CamelCase) vs 스네이크 케이스(snake_case)카멜 케이스(Camel Case)첫 글자는 소문자로, 중간 글자들..
ArrayList ArrayList sportStarts = new ArrayList(); sportStarts.add("김연아"); sportStarts.add("박태환"); sportStarts.add("손흥민"); sportStarts.add("이강인"); sportStarts.add("김송아"); 이런 리스트 객체가 있을 때 리스트 내 모든 요소를 출력하는 방법은 아래와 같다. 순수 for문 for(int i=0; i단점HashMap의 경우 index로 접근할 수 없다.Iterator인덱스 없이 모두가 사용할 수 있는 방법 Iterator sportsStartIterator = sportS..
정의누군지 + 액세스 관리하기 위한 리소스 서비스 IAM을 사용하여 내 계정에 액세스 할 수 있는 계정을 만들고 관리할 수 있다. 팀 프로젝트 시 나의 AWS 계정의 모든 권한을 주기 싫고 특정 권한만 주고 액세스 하게 하고 싶을 때 사용하였다. 💡 팀장만 root ID, 팀원은 user IDex. 프론트 담당 팀원에겐 프론트 관련 리소스만 주기 IAM 유저 생성하기1. IAM 콘솔로 이동 2. 사용자 메뉴로 이동사용자 생성 버튼을 누른다.3. 사용자 세부 정보 지정 사용자 이름을 입력한다. = AWS에 로그인할 때 사용하는 이름[주의 사항]- 사용자 이름에는 최대 64개의 알파벳, 숫자 및 더하기(+), 등호(=), 쉼표(,), 마침표(.), 앳(@), 그리고 하이픈(-) 조합을 사용할 수 있다. -..
배열리스트크기고정동적빈칸가능불가능조회빠름비교적 느림데이터 중간에 추가느림빠름넣을 수 있는 자료형의 개수단일 유형여러 유형넣을 수 있는 자료형의 종류원시 자료형, 객체 자료형객체 자료형 배열과 리스트 모두 Java의 모든 class를 담을 수 있으며, 다형성을 활용해 여러 유형의 class를 담을 수 있으나, 리스트는 Java의 모든 class의 상위 타입인 Object를 활용하여 구현되었기에 primitive type을 담을 수 없어 wrapper class를 활용하지만 배열은 기본형 wrapper class 없이 담을 수 있다.
로그(Log)= 발자국을 찍는다.= 이 시스템이 잘 돌아가는지 확인하기 위함.= 에러 찾는 용도! 지금까지는 콘솔창에 주로 찍긴 했지만 콘솔창은 사용자 화면이므로텍스트파일에 archiving 하곤 한다. 라이브러리Logging, Logback, log4j 등이 있지만 slf4j(gradle / 롬복)을 주로 사용한다.더보기 롬복 slf4j 사용 예시 : @Slf4j 어노테이션을 붙여 사용한다.import lombok.extern.slf4j.Slf4j;@Slf4j@RestController@AllArgsConstructorpublic class ProductController {...}로그 레벨 (Log Level)정의로그 레벨(Log Level)은 로그 메시지의 중요도를 나타내는 수준을 의미한다.로그 레..
정의프로그램 실행 중 나타나는 오류 개발자가 예상하지 못한 오류예외 처리오류가 나서 실패한 것을 성공으로 바꾸는 것이 아닌, 오류가 나서 실패했다고 알려주는 것 기본 문법try { // 예외가 발생할 것 같은 의심스러운 코드 } catch(예외클래스 e) { // 예외 터지면 실행되는 코드} ArrayIndexOutOfBoundsException package com.example.shoppingmall.exercise;public class ArrayIndexOutOfBoundEx { public static void main(String[] args) { // 예외 발생 상황 String[] str = { "A", "b"}; try { S..
Create React App 로 시작하기npx create-react-app my-appcd my-appnpm run start Vite 로 시작하기npm create vite@latest my-app -- --template reactcd my-appnpm installnpm run devCRA vs ViteCRA 보다 Vite를 사용했을 때 프로젝트 생성 + 패키지 설치 속도가 훨씬 빠르다. 자세한 비교는 아래 글을 참고! [React] 리액트 프로젝트 생성 - Create React App 보다 더 빠른 Vite 사용하기보통 리액트에서 간단한 프로젝트를 생성하기 위해 가장 많이 사용하는 것은 Create React App 즉 CRA다. 그러나 CRA는 단점이 있는데, 바로 속도가 느리다는 것이다..