본문 바로가기

전체 글359

[Java 5편] 객체, 엔티티, 테이블 설계 목차는 Java series 에 있습니다. 유튜브 보고 내용을 정리했습니다. 간단히 작성 후, 추후 공부하면서 내용을 보강할 예정입니다. 내용 정리가 뒤죽박죽으로 돼있습니다... [Java 5편] 객체, 엔티티, 테이블 설계 설계란? 코드를 어떻게 배치할 것인지에 대한 의사결정입니다. 어떻게 배치할 것인지에 대한 질문은 의존성에 달려있습니다. 변화하는 것은 변화하는 것끼리 코드를 배치시키고, 변화하지 않는 것은 변화하지 않는 것에 코드를 배치시킵니다. 즉, 의존성은 변화에 의해서 영향받을 수 있는 가능성입니다. 설계 순서 비즈니스 분석 및 행위, 상태, 필요 기능, 제약사항 등을 플로우로 그립니다. 구조도 및 클래스 다이어그램을 그립니다. 다이어그램 내에 방향 또는 관계 표현은 필수 입니다. (1:n, .. 2022. 8. 4.
[MSA 3편] CQRS 정리 목차는 MSA 에 있습니다. [MSA 3편] CQRS 정리 CQRS 란? Command and Query Responsibility Segregation 명령을 처리하는 책임과 조회를 처리하는 책임을 분리시키는 것입니다. 나오게 된 배경 프로그램을 개발하다보면 도메인 모델의 복잡도가 증가하게 됩니다. 이는 유지보수성을 힘들게 하고, 요구사항이 추가될 때마다 변화에 유연하지 못합니다. 하나의 Table 에 대해 각종 DTO 등이 점점 증가하게 되고 이를 해결하기 위해 CQRS 가 나왔습니다. 첫번째 사례 동일한 Database 에 조회 하는 Model 과 CUD 하는 Model 을 분리하는 것입니다. REST API 를 예로 들어보면 조회하는 Api 를 담당하는 controller 를 QueryContro.. 2022. 8. 3.
[테스트 & 리팩토링 6편] 팩토리 패턴 if else 줄이기 (map, functional interface 사용) source 는 Github 에 있습니다. 목차는 테스트 & 리팩토링 목차 에 있습니다. [테스트 & 리팩토링 6편] 팩토리 패턴 if else 줄이기 (map, functional interface 사용) 팩토리 패턴이란? 객체를 생성해주는 패턴 중 하나 입니다. 객체를 생성하는 인터페이스를 미리 정의하고, 인스턴스를 만들 클래스의 결정을 서브 클래스에서 결정합니다. 아래 소스는 팩토리 패턴으로 구현한 소스이며, 리팩토링 전입니다. If else 를 줄이는 방법 아래와 같이 Map 에 집어넣고 데이터를 가져온다면 if else 를 줄일 수 있습니다. interface 구현 없이 Functional interface 사용 Supplier functional interface 는 매개변수 없이 T 를 리턴.. 2022. 8. 1.
[Java 4편] 객체지향, 함수형프로그래밍, 람다식 목차는 Java series 에 있습니다. [Java 4편] 객체지향, 함수형프로그래밍, 람다식 객체란? 객체란 식별 가능한 개체 또는 사물입니다. 자동차처럼 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수 있습니다. 객체는 구별 가능한 식별자, 행동, 변경 가능한 상태를 가질 수 있습니다. Java 에서 식별자는 변수를 의미하며, 행동은 method, 변경 가능한 상태는 변수입니다. 변경 가능한 상태를 통해 객체 간 통신을 할 때, 현실세계의 요구사항을 반영할 수 있습니다. 객체는 다른 객체의 상태에 직접적으로 접근할 수도, 상태를 변경할 수도 없습니다. 자바에서는 캡슐화를 통해 이를 제어할 수 있으며, 캡슐화를 이용하여 객체 지향 프로그래밍의 복잡성을 낮출 수 있습니다. 예를 들어, 객체가 .. 2022. 7. 27.
[ETC 2편] Apache Embedded Ftp Server 정리 목차는 ETC 목차 에 있습니다. [ETC 2편] Apache Embedded Ftp Server 정리 테스트 용도로 FTP Server 를 사용할 일이 있어 Embedded FTP Server 에 대해 알아봤습니다. Embedded Ftp Server 준비해야할 것 apache embedded ftp server 를 참고해서 작성했습니다. Depedency mina-core, 2.0-M3 or later Apache Mina는 네트워크 프레임워크로 이벤트 중심 비동기 api 및 사용자가 쉽게 네트워크 서버를 구현할 수 있게 도와주는 프레임 워크 입니다. slf4j-api 로깅 관련 open source 입니다. A SLF4J implementation of your choice, for example .. 2022. 7. 16.
[network 1편] 로그인 관련 정리 (세션, JWT) 목차는 network 목차 에 있습니다. [network 1편] 로그인 관련 정리 (세션, JWT) 로그인 하는 방법 중 세션과 JWT 에 대해 비교 정리했습니다. 세션이란? 세션이란 일정 시간동안 같은 사용자로 부터 들어온 접속 상태를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술입니다. 세션 구현 방안 세션을 서버 1대에서 관리 서버 1대에서 key,value 나 서버 메모리에 저장해 관리합니다. 구현이 쉬우나 서버 대수가 늘어날수록 확장이 어렵습니다. sticky session 을 통해 해결이 가능하나, sticky session 의 경우 특정 서버로 트래픽이 몰릴 수 있습니다. sticky session 이란 같은 세션 ID 는 세션을 생성한 서버로만 request 가 가도록 합니다. .. 2022. 7. 16.