[NHN] 최종 발표회 이후 리팩토링 과정
·
CNU SW 아카데미/최종 프로젝트 이후
프로젝트가 전부 끝나고 CNU-SW 아카데미 수료식도 완료했지만 저는 많이 아쉬운 점이 남아서 제가 맡은 부분 외에도 다른 팀원의 코드도 수정, 개선하려고 합니다.또, 제가 맡지 않아서 잘 모르는 부분이 많이 있는데, 특히 Auth 관련한 Session 기반 인증 또는 JWT 기반 인증도 더 공부하려고 합니다. 마지막으로 저희 팀에서 중점적으로 다루지 않은 부분인 Spring Batch, Cache도 적용해 보려고 합니다.꽤 오랜 시간 걸리겠지만 차근차근 개선해 나갈 예정입니다 !!  12월 24일 화요일 10:55 기준으로 프로젝트 DDL입니다.데이터베이스 같은 경우도 팀에서 쓰던 것 말고 제가 따로 dev용 데이터베이스를 만들어야 합니다.중간중간 수정이 많이 이뤄질 거 같은 부분이기도 합니다. 우선 ..
[NHN] CI/CD 전체 설정 완전 사이클
·
CNU SW 아카데미/15주차(최종 프로젝트)
서버 인스턴스 생성 깃 CI/CD 설정 세팅에서 secrets IP, ID, KEY, PORT 설정 서버 내에 관리할 폴더 생성 startup.sh, target 생성 chmod 755 startup.sh 권한 설정 - option - 서버 인스턴스에 nginx 설치 후 테스트 및 실행 nginx 포트 접근 허용 서버 인스턴스에 java 설치 SonarQube 프로젝트 생성 세팅에서 secrets HOST, TOKEN 설정 # 서버 인스턴스 내부에서 진행sudo adduser {project-name}위와 같이 사용자를 추가합니다. 사용자명은 자유롭게 해도 됩니다.sudo login {project-name}만들어진 사용자로 접속합니다. 접속이 완료되었다면 키 파일을 생성해야 하는데 다음과 같습니다.mk..
[NHN] Github Action CI/CD
·
CNU SW 아카데미/15주차(최종 프로젝트)
깃헙 액션에서 java with maven 검색하면 딱 'java with maven'이라고 뜨는 것을 선택합니다. mvn.yml 파일 설정 다 하면 이런 식으로 됩니다.자바 버전에 맞게 'java-version'을 설정하고 'distribution'도 배포판에 맞게 설정하면 됩니다.openjdk로 해 보려고 했는데 배포판이 맞지 않는다고 떠서 그냥 temurin으로 하게 되었습니다 ..  그 다음에 빌드하려면 에러가 뜰 겁니다. 안 뜨면 좋은 겁니다.Error: HTTP Status 403 for request POST https://api.github.com/repos/nhnacademy-be7-2joping/2joping-front/dependency-graph/snapshotsError: Resp..
[NHN] 최종 과제 시작
·
CNU SW 아카데미/15주차(최종 프로젝트)
최종 과제 진행첫 주에 ERD 설계를 진행했습니다. 우선 결과물 먼저 보여 드릴게요.# 고객(비회원), 회원고객(비회원)과 회원 테이블 관련해서 고민이 정말 많았습니다.왜냐하면 비회원의 경우 비밀번호를 데이터베이스에 저장하자니 영구적인 로그인/로그아웃에서의 데이터로 역할을 수행하지 않을 것이고비회원으로 도서를 주문했다고 하더라도 회원으로 가입해 버리면 새롭게 비밀번호를 생성해 줄 것 같았습니다.기존의 비밀번호를 세팅하는 것은 불변성에 어긋난다고 생각했습니다. 그래서 고객 테이블과 회원 테이블은 아예 따로 둘 것인가부터 생각하기도 했고(이럴 경우 다른 주문, 도서 등의 테이블에 각각 연결해 줘야 함)고객과 회원을 어떻게 구별해서 판단할 것인가 생각하자니 테이블이 따로따로니까 맨 처음부터 구별될 거 같고 ...
[NHN] MSA (마이크로 서비스 아키텍처)
·
CNU SW 아카데미/14주차
미니 두레이 설계에 대한 조별 과제가 나왔습니다. 대략적인 요구사항을 파악해 보면 MSA 설계를 공부하고 개발하는 것으로 보입니다.친구에게 도움을 요청하니 MSA에 대해 공부해 보라고 합니다. MSA가 뭐냐 ?Micro Service Architecture(마이크로 서비스 아키텍처)의 줄임말입니다. 그냥 경량 서비스를 제작하는 건데 먼저 MSA의 특징은 다음과 같습니다.잘 분리된 마이크로서비스로 인한 탈중앙화대규모 시스템을 위한 아키텍처가벼운 네트워크 프로토콜느슨한 결합서비스 지향 아키텍처 # 이것을 왜 쓰냐 ? 도대체 장점이 뭐냐 하면, 다음을 보십쇼.독립성대용량 데이터 처리에 비교적 자유로움마이크로서비스는 독립된 데이터 저장소를 갖기 때문에 대용량 데이터를 마이크로서비스마다 나누어 저장할 수 있다.기..
[NHN] Java Data Access
·
CNU SW 아카데미/14주차
Entity의 생명주기 비영속 (new/transient)영속성 컨텍스트와 전혀 관계 없는 상태영속 (managed)영속성 컨텍스트에 저장된 상태준영속 (detached)영속성 컨텍스트에 저장되었다가 분리된 상태삭제 (removed)삭제된 상태영속성 컨텍스트가 Entity를 관리하면 얻을 수 있는 이점1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 지연변경 감지지연 로딩
[NHN] Redis
·
CNU SW 아카데미/13주차
레디스란?key-value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 DBMSRemote Dictionary Server인메모리 데이터 저장: 레디스는 데이터를 메모리에 저장하므로 매우 빠른 응답 시간을 제공합니다. 이는 주로 캐싱과 같이 빠른 응답이 필요한 용도에 적합합니다.다양한 데이터 구조: 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 구조를 지원하여 다양한 용도로 활용할 수 있습니다.내장된 복제 및 고가용성: 레디스는 마스터-슬레이브 복제를 지원하여 데이터의 복제본을 유지하고 고가용성을 보장합니다.영속성 지원: 레디스는 디스크에 데이터를 저장하고 영속성을 제공하는 기능도 지원합..
[NHN] RESTfull API / HTTP 통신
·
CNU SW 아카데미/13주차
@Controller@Controllerpublic class HelloController { @GetMapping("/hello") public String hello() { return "hello"; }}메소드에서는 "hello"를 응답 -> ViewResolver가 동작 hello라는 문자열을 응답하고 싶으면?@Controllerpublic class HelloController { @ResponseBody @GetMapping("/hello") public String hello() { return "hello"; }}@ResponseBody를 붙이면메소드에 응답값 = HTTP 응답의 본문 @RestController@Rest..