목록어플리케이션개발 (105)
코딩공작소

기본적인 아키텍처는 '표현', '응용', '도메인', '인프라스트럭처' 네 가지의 영역으로 구성된다. 1) 표현 영역 : HTTP통신을 하는 컨트롤러 단2) 응용 영역 : 서비스를 담당하고 있으며, 기능을 직접 수행하기 보다는 도메인 모델로 로직 수행을 위임한다.3) 도메인 영역 : 실질적인 기능을 구현한다.4) 인프라스트럭처 : 구현 기술을 다룬다. 도메인의 핵심 모델을 구현하는 것이 핵심이다.1) 엔티티 : 고유의 식별자를 갖는 객체로 자신의 라이프 사이클을 갖는다.2) 밸류 : 고유의 식별자를 갖지 않는 객체로 주로 개념적으로 하나인 값을 표현할 때 사용된다.3) 애그리거트 : 연관된 엔티티와 밸류 객체를 개념적으로 하나로 묶은 것이다.4) 리포지터리 : 도메인 모델의 영속성을 처리한다.5) 도..

도메인이란 무엇일까?소프트웨어로 해결하고자 하는 문제 영역, 그것이 도메인이다.또한, 도메인은 여러 하위 도메인으로 구성된다. 애초부터 도메인을 잘 설계하기 위해서는 일단 요구사항의 정확한 이해가 필요하다.이를 위해선, 개발자와 전문가가 직접 대화를 하며 정보의 왜곡과 손실을 방지해야 한다. 도메인 모델 : 특정 도메인을 개념적으로 표현한 것도메인 모델은 기본적으로 무엇을 사용하든,도메인 자체를 이해하기 위한 개념 모델이다.구현 기술을 위해서는 구현 모델이 따로 필요하다.객체 기반 모델을 기반으로 도메인을 표현했다면객체 지향 언어를 이용해 개념 모델에 가깝게 구현할 수 있다. 도메인 모델 패턴인프라스트럭처 : 데이터베이스나 메시징 시스템과 같은 외부 시스템과의 연동 처리도메인 : 도메인 규칙을 구현응..
1. 배치만들기완료여부에 완료가 되어있지 않은 데이터들에 대하여 매일 익일로 날짜를 옮겨주는 배치를 개발할 예정이다.ㄱ) 새로운 배치는 기존의 프로젝트에 그대로 같이 개발할 예정이다.--> 배치가 함께 있는 프로젝트는 개발적으로 그리고 인프라적으로 간단함을 수반하지만, 프로젝트가 커질수록 그런 방식으로 하면 안된다. 하지만 나는 일단 작은 개발프로젝트이고 배치도 한 건만 개발할 예정이므로 다른 프로젝트를 새롭게 만들기보다는 기존 프로젝트에 하기로 한다. ㄴ) 배치를 올리는 서비스는 AWS람다에 올릴 예정 그리고 이벤트왓치를 트리거로 사용하여 정기적으로 API호출 예정--> 기본적으로 간단한 로직으로 실행할 것이기 때문에 서버리스의 람다를 사용할 것이고, 주기적으로 실행되어야 하기때문에 이벤츠왓치 트리거를..

처음으로 EC2 터미널에서 도커를 설치해준다.sudo yum update -ysudo yum install docker -ysudo systemctl start dockersudo systemctl enable dockersudo usermod -aG docker ec2-user # 현재 사용자에 Docker 권한 추가 2. Docker 이미지 생성 .jar 파일을 실행하기 위해 Docker 이미지를 빌드해야 합니다.2.1. Dockerfile 생성EC2에서 실행 중인 .jar 파일과 동일 디렉터리에 Dockerfile을 생성합니다.# Java 기반 이미지를 사용FROM openjdk:17-jdk-slim# 컨테이너 내 앱 디렉터리 설정WORKDIR /app# 호스트의 .jar 파일을 컨테이너로 복사C..

일단 회원가입 시에 중복된 회원 및 아이디에 대한 유효성 검증을 개발했다.페이지 이동없이 API 응답 값을 전달받기 위해서는 ajax 및 RestController로의 변경이 필요했다. 회원가입 페이지에서 ajax를 통해 회원가입을 시켜주는 로직으로 변경설정 하였다.API응답 값에 따라서 그 다음으로의 동작들을 분기 처리했다. 그리고 변경된 API기존에는 로그인 페이지로의 뷰를 전달했었는데, 회원가입 로직을 처리하고 유효성 검증을 통해 바디값을 채워 전달하도록 변경하였다. 먼저 회원가입 시 전달받은 아이디를 통해 멤버를 조회해 기존의 멤버와 중복이 있는지 확인하는 로직을 추가해줬다.그리고 스프링 시큐리티 기능을 통해서 이미 인증된 회원의 정보를 가져오는 로직을 통해 멤버의 정보를 조회해서투두를 처음 등..

생각보다 간단할 줄 알았던 부분에서 이상한 오류때문에 며칠동안 애를 먹고 흥미가 떨어질랑말랑 하던 찰나에 간신히 오류를 수정했다. 일단)))스프리부트에서 타임리프를 사용하지 않고 jsp를 사용하려고 gradle.build를 건드리다가 뷰 리졸버 설정값이 꼬여보여서 뷰가 제대로 보여지지 않는 현상이 있었다.--> 다시 타임리프를 우선순위로 설정하도록 수정했다. 또한, 시큐리티 인증 부분에서 회원가입 로그인 부분을 다시 만져 회원가입 및 로그인이 가능하도록 했고, 시큐리티컨피그 파일을 통해 명시되어 있는 요청값만 허용할 수 있도록 보안을 설정하였다. [로그인 페이지]먼저 시큐리티필터함수를 살펴보면, 지정된 페이지 외의 값들은 로그인페이지로 보내도록 명시되어 있다.그리고 로그인성공시 홈으로 가서 기본 인덱스..

. 전체 구조 설계도메인 설계Member (회원): 회원 정보를 저장Todo (할 일): 회원과 연관된 Todo 데이터를 저장Spring Security 설정회원가입 (Signup)과 로그인 (Login) 기능 구현인증된 회원만 자신의 Todo를 CRUD 가능하도록 보호회원-할 일 연관Member와 Todo 간의 연관관계를 매핑 (1)API 구성회원가입: /api/members/signup로그인: /api/loginTodo CRUD: /api/todos/** Member 추가 및 스프링 시큐리티 로직 추가일단 대표적으로 로그인 보안기능을 사용하려면,스프링 시큐리티JWT OAuth방식의 인증방법이 있다.각각의 특징들이 있어서, 상황 별로 잘 선택해서 쓰면 된다. 나는 개인적으로, 자체적으로 관리해보고 싶어..

정말 오랜만에 자바스크립트를 개발했더니 머리가 아프다.똘똘한 쥐피티의 도움도 많이 받았다. 일단 기본적으로 포스트맨으로 테스트를 할 때는, Dto에 ReqeustBody어노테이션이 없어도 잘 통신이 되었는데, 검색을 좀 해보니 포스트맨과 서버 사이의 어느정도 자동으로 세팅되는 부분이 있어서 잘되었던 것 같다.그래서 프론트에서 요청을 날렸을 때, 데이터를 잘 못읽어오는 부분이 있어서 @ReqeustBody 어노테이션을 붙여주니까 잘 통신되었다. 재미로 만든 일정관리표(by.TH) Popup Title ..

package toyPJT.toypjt_v100.controller;import lombok.RequiredArgsConstructor;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.*;import toyPJT.toypjt_v100.domain.Todo;import toyPJT.toypjt_v100.domain.dto.todoDto;import toyPJT.toypjt_v100.service.TodoService;import java.util.HashMap;import java.util.List;import ..

기본적인 JPA CRUD와 AWS EC2, RDS세팅을 마치고,본격적으로 메인 화면을 구성하려한다. 나는 입사후에 홈페이지 개발파트에서 개발을 한적이 있는데, 그때는 주로 디자인적인 요소보다는 JS에서의 동적 함수들과 Ajax통신을 통신 프론트 역할의 서버단의 MVC패턴들을 개발해왔다.오랜만에, 프론트 개발을 하려고 하니 디자인 css는 기본중의 기본만 간신히 끄적여 본게 끝 밑바닥부터 개발하기란 불가능한 실력이다.그래서, 요즘 그렇게 개발자를 위협한다는 GPT에게 프론트화면단 개발을 맡기기로 해봤다. 결과적으로 매우 놀라운 경험을 했다..... 내가 던져준 이미지 요청한 텍스트1) 사진에 대한 간략한 설명을 해줄게 가로가 총 7개인 표 형태의 일정표를 관리하는 화면을 만들거야 가운데 블록에는 오늘을 기..