전체 글 20

Intellij로 UML을 그려보자!(PlantUML)

프로젝트에서 기능구현을 하기 전 무엇을 해야 하는가?라는 질문을 해보면 아주 많은 답변을 받을 수 있다. ERD 설계 API 명세서 작성 유즈케이스 작성 프로젝트 구성원 간의 컨벤션 구성 당장 떠오르는 위 4가지 외에도 사람마다 중요시하는 것에 비중을 두고 많은 의견을 줄 것이다. 예전에 수업 들었던 29CM의 이희창 님께서 강의하셨던 내용에도 비슷한 내용이 있었다. 2023.03.15 - [Study] - 코드 구현을 하기 전에 해야 할 것 코드 구현을 하기 전에 해야할 것 Fastcampus의 The Red 강의 중 The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창 수업을 들으며 개발을 하기 전에 고려해야 할 사항들에 대해 배웠고 이를 잊어버리지..

Develop/etc 2023.08.04

대체키 사용하기

Fastcampus의 The Red 강의 중 The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창 수업을 들으며 대체키와 관련된 내역을 들었고 이것은 나중에 어디서나 사용할 수 있는 지식이다!라고 생각이 들어 호다닥 정리하기로 결심했다. 최근 너무 강의에 대한 피드백 글만 올리는 것 같기도 하고... 식별자와 PK DDD의 Entity 개념에서 고유한 식별자는 중요 개념 중 하나 Entity는 자신의 생명주기동안 형태와 내용이 급격하게 변경될 수 있지만 그 엔티티의 성질은 연속적으로 유지되어야 한다. 객체 A의 속성은 서비스 로직이 진행되면서 값이 변경될 수 있지만 객체 A라는 것은 변하지 않고 지속되어야 한다. (도메인 주도 설계의 p93 참고) 위와..

Study 2023.03.15

코드 구현을 하기 전에 해야할 것

Fastcampus의 The Red 강의 중 The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창 수업을 들으며 개발을 하기 전에 고려해야 할 사항들에 대해 배웠고 이를 잊어버리지 않고 체화하기 위해 다음과 같이 정리하였다. 개발 디자인 문서르 작성한 후 구현 개발을 시작하기 전에 개발 디자인 문서를 작성하고 동료와 공유를 권장 서비스 구현에 대한 목표와 설계, 제약 사항 등을 미리 생각해 본 후에 개발을 시작 큰 시행착오 없이 원하는 구현을 진행할 수 있음 개발 디자인 문서를 작성한 후에 이를 동료와 리뷰하는 과정을 거치면, 좀 더 좋은 디자인과 방향성을 잡을 수 있다. 서비스의 인수인계 과정에서도 코드와 함께 개발 디자인 문서를 전달한다면, 넘겨받는..

Study 2023.03.15

MSA와 DDD

1. MSA? Microservice Architecture 비즈니스 도메인을 중심으로 서비스를 모델링하고 구현하는 아키텍처 스타일 도메인 서비스 간의 통신은 네트워크 기반의 HTTP API 또는 비동기 메시징 방식 등으로 이루어짐 각 도메인 서비스는 자체 DB를 가짐 (반)Monolithic 하나의 프로젝트 구조 안에서 모든 도메인을 구현하는 방식 MSA 전환을 고려해야 하는 시점 생존을 걱정하던 초기 스타트업에서 벗어나 비즈니스 규모가 어느 정도 궤도에 오르는 시점 Monolithic 구조의 장점보다 단점이 부각되는 시점 하나의 Repository에 코드 베이스가 개개인이 감당할 수 없는 수준으로 커짐 이에 따라 코드 파악과 유지보수가 어려워짐 구현과 테스트, 배포의 속도가 점점 느려지고 정기 배포라..

Study 2023.03.13

[Roadmap.sh Devops Study Week1] Language

Week1. DevOps RoadMap Language ref. https://roadmap.sh/devops Subtitle 1. Programming Language Main Language : [JAVA] 1. 언어의 개발 배경 및 특이사항 처음 개발 목적은 가전제품 내에 탑재해 동작하는 프로그램을 만들기 위해 개발 타 컴파일 언어와 구분되는 가장 큰 특징 : 컴파일된 코드가 플랫폼 독립적이다. 자바 컴파일러는 자바 언어로 작성된 프로그램을 바이트코드라는 특수한 바이너리 형태로 변환 바이트 코드를 실행하기 위해 JVM(Java Virtual Machine)이라는 특수한 가상 머신 필요 JVM은 자바 바이트 코드를 어느 플랫폼에서나 동일한 형태로 실행 자바 프로그램은 CPU나 운영체의 종류에 관계없이..

Study 2023.03.13

org.apache.commons.lang.StringUtils 활용하기

Java를 통해 프로젝트를 작성하다 보면 간혹 String 타입을 가지고 형태를 변환 및 검사하는 경우가 발생한다. 예를 들어 게시판 페이지의 목록 노출과 관련된 케이스를 살펴보자 1. 요구사항 - 게시판 페이지에서 작성된 게시판 목록을 불러오면서 닉네임이 등록된 회원의 경우는 닉네임으로, 등록되지 않은 회원은 ID로 표기한다. - 요구사항 목업 2. DB 구조 - 게시글 데이터를 관리하는 테이블은 다음과 같은 필드로 구성 - 게시글 id, 작성 회원 id, 게시글 제목, 게시글 본문, 게시글 작성일자, 조회수 - 회원 데이터를 관리하는 테이블은 다음과 같은 필드로 구성 - 회원 id, 회원 비밀번호, 회원 이름, 회원 닉네임, 회원 이메일 3. 게시글 리스트 조회 FlowChart - 게시글 리스트 조..

Develop/java 2023.03.05

08_의존성 관리하기

오브젝트 - 코드로 이해하는 객체지향 설계의 8번째 챕터 의존성 관리하기 파트다. 08_의존성 관리하기에서는 영화 예매 시스템을 통해 충분히 협력적이면서도 유연한 객체를 만들기 위해 의존성을 관리하는 방법을 살펴보고 있다. 00_들어가기 작고 응집도 높은 객체 책임의 초점이 명확하고 한 가지 일만 잘하는 객체를 의미 단독으로 수행할 수 있는 작업은 거의 없기 때문에 일반적으로 애플리케이션의 기능을 구현하기 위해서는 다른 객체에게 도움을 요청해야 한다. 이런 요청이 객체 사이의 협력을 낳는다. 협력은 객체가 다른 객체의 존재와 다른 객체가 수신할 수 있는 메시지를 알고 있어야 한다. 이런 지식이 객체 사이의 의존성을 낳는다. 협력을 위해서는 의존성이 필요하지만, 과도한 의존성을 애플리케이션을 수정하기 어렵..

07_객체 분해

오브젝트 - 코드로 이해하는 객체지향 설계의 7장 객체 분해 파트를 다루는 글이다. 7장에서는 프로그래밍 패러다임의 흐름 속에서 지금까지 정리했던 객체지향 개념들이 탄생하게 된 배경을 서술하고 있다. 이를 통해 지금까지 다루었던 다양한 원리와 개념들을 이해하는데 많은 도움이 될 수 있고, 객체지향 이외의 다른 패러다임을 이해하는것에 도움을 받을 수 있다고 설명하고 있다. 00_들어가기 추상화 불필요한 정보를 제거하고 현재의 문제 해결에 필요한 핵심만 남기는 작업 분해 큰 문제를 해결 가능한 작은 문제로 나누는 작업 추상화와 분해는 인간이 세계를 인식하고 반응하기 위해 사용하는 가장 기본적인 사고 도구라고 할 수 있음 01_프로시저 추상화와 데이터 추상화 프로그래밍 언어의 발ㄹ전은 좀 더 효과적인 추상화를..

06_메시지와 인터페이스

[오브젝트 - 코드로 이해하는 객체지향 설계]의 6장 메시지와 인터페이스 챕터이다. 이번 챕터에서는 영화 예매 애플리케이션을 예제로 두고, 유연하고 재사용 가능한 퍼블릭 인터페이스를 만드는데 도움이 되는 설계 원칙과 기법을 살펴보는것을 주제로 하고있다. 00_들어가기 객체지향 프로그램에 대한 가장 흔한 오해 애플리케이션이 클래스의 집합으로 구성된다. 클래스라는 구현 도구에 지나치게 집착하면 경직되고 유연하지 못한 설계에 이를 확률이 높아진다. 훌륭한 객체 지향 코드를 얻기 위해서는 클래스가 아닌 객체를 지향해야 한다. 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 책임이 객체가 수신할 수 있는 메시지의 기반이 된다. 클래스 사이의 정적인 관계에서 메시지 사이의 동적인 흐름으로 초점을 전환하는 ..