목적- B2C 이커머스를 경험하기 위한 이커머스 프로젝트 기술 목표- DB 동시성 이슈 해결 경험- MSA 구조 구축- 테스트 코드 작성 사유- 쇼핑 하는것을 좋아해서 자연스럽게 관심을 가지게 됨 서비스 종류- 무신사 요구사항선순위- 회원- 주문 - 장바구니- 배송- 상품 후순위- 쿠폰 사용기술 및 구현방향선순위- Spring Security- Spring boot 멀티모듈- Mysql 이중화- Redis 후순위- Spring Batch- 프론트 구현
테스트한 환경 - 윈도우 10 - mysql이 설치되어 있어야 함(mysqldump.exe 사용) 목표 - DDL과 insert문 혹은 insert문만 dump 뜨는 법 export하는 방법 1. dump 뜰 스키마에서 오른쪽 마우스 클릭 후 빨간 박스 클릭 2. mysqldump 옵션 - Path to mysqldump: 로컬에 설치된 mysqldump.exe 설정 - Tables 옵션은 많이 있는데 이름 그대로 해석이 될꺼라 생략 ( 원하는 옵션이 체크박스에 없으면 mysqldump 옵션을 검색해서 네모박스에 수동으로 추가하면 된다) - Multiple rows inserts: insert를 한번에 해야 더빠르게 삽입 가능하다. 몇만 몇십만건은 단일 insert문으로 넣을려고 하면 시간이 오래 걸린다..
스프링 부트, Gradle의 bootBuildImage를 사용해 간단하게 스프링부트 도커 이미지 생성 후 Github Actions을 연동하여 서버에 배포 (필요시 Dockerfile을 커스텀하여 이미지 생성도 가능) Github Actions의 자세한 사용법은 맨 하단 출처의 블로그 참고 ./github/workflows/**.yml name: 'build-push-prod' on: push: branches: [ "main" ] # pull_request: # types: # - closed # branches: [ "main" ] jobs: build: runs-on: ubuntu-latest name: build steps: # 코드 저장소로 부터 CI 서버로 코드 pull - name: che..
환경: 센토스 7.8 목적 하나의 개발 서버에 도커 네트워크를 구성하여 Spring Applications, Mysql을 docker-compose를 이용해서 구성한다. docker 설치 # Docker 설치 # https://docs.docker.com/engine/install/centos/ 사이트 자료를 참고하여 설치한다. yum -y update yum install -y yum-utils # Docker repository 시스템에 추가 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum-config-manager --enable docker-ce-nightly # 최신버전의 Docker..
문자함수 1. 문자열 자르기 SELECT capital_city, substr(capital_city,2,2) as substr, mid(capital_city,2,2) as mid, substring(capital_city,2,2) as substring FROM class.country - 숫자는 1부터 시작 - 3함수 모두 기능이 같음 - substr(컬럼명, 시작할 문자열의 위치 값, 리턴 시킬 값의 길이) 2, 특정 문자열 위치 찾기 SELECT capital_city, instr(capital_city, 'a') as instr_a, instr(capital_city, 'do') as instr_do, instr(capital_city, 'r') as instr_r FROM class.coun..
https://about.gitlab.com/releases/2022/06/30/critical-security-release-gitlab-15-1-1-released/ GitLab Critical Security Release: 15.1.1, 15.0.4, and 14.10.5 Learn more about GitLab Critical Security Release: 15.1.1, 15.0.4, and 14.10.5 for GitLab Community Edition (CE) and Enterprise Edition (EE). about.gitlab.com 최근 깃랩 취약점 발생 현재 버전: 14.6.3 업그레이드 할 버전: 14.10.5 프로세스 1. 기존 도커 컨테이너 이미지화(백업) docker ..
기록용 직접 정의한 헤더값의 language값에 따른 예외처리 메시지 다중화 applicaiton.yml spring: messages: basename: i18n/exception encoding: UTF-8 resources/i18n/exception_eng.yml ※ 다른 포맷 사용시 그에 따른 값으로 변경 # exception_eng.yml unKnown: code: "-9999" msg: "An unknown error has occurred. SadPepe :(" userNotFound: code: "-1000" msg: "This member not exist. SadPepe :(" resources/i18n/exception_kor.yml ※ 다른 포맷 사용시 그에 따른 값으로 변경 # e..
개념 데드락이란 두개 이상의 프로세스가 필요한 자원을 얻지 못해 상대방의 작업이 끝나기만을 무한정 기다려 아무 작업을 하지 못하는 상태를 가리킵니다. 위 그림은 다중 쓰레드 프로그래밍 환경에서 흔히 발생하는 데드락 문제입니다. Thread2는 A를 점유하고 있으면서 B의 자원을 요청, B의 자원을 습득할 때 까지 대기 Thread3는 B를 점유하고 있으면서 A의 자원을 요청, A의 자원을 습득할 때 까지 대기 서로 상대방이 자원을 내놓기를 바라면서 무기한 연기에 빠지는 상황 시스템 파일이나 다른 프로그램이 공유하는 파일을 건드리기 쉬운 프로그램은 설치 과정에서 "프로그램을 설치할 때는 "가능하면 다른 프로그램은 꺼주세요"라는 문장이 나오면서 모든 프로그램이 꺼지는 경우가 있는데, 이유는 데드락이 발생할 ..
목표nextstep TDD 클린코드 수강아이티 동아리 지원 (면접 연습 하기)엠브레이스 대형 프로젝트 백엔드 주도할 수 있도록 빡공하기 (만 1년차가..?)책 꾸준히 읽기운동하기(28살부터 힘듬...) 읽은 책 읽고 있는 책-실전자바소프트웨어개발 읽어야 될 책- 모던자바인 액션- 단위테스트- 클린코드- 이펙티브 자바 본 강의- 디자인 패턴(백기선) 봐야될강의- 스프링 고급(김영한) 명언김영한님- 한달안에 특정책 다볼꺼야 -> 달성하기 힘듬- 시스템화하라 -> 하루 2시간 알고리즘 등 1월- 과장님 퇴사 후 정신차림- 회사에 젠킨스, gitlab 도입- 보안팀에서 ssh 안뚫어줌 ㅡㅡ 2월- 대형 프로젝트 결정- 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
배경 /home/tomcat1 /home/tomcat2 /home/tomcat3 하나의 서버에 여러 톰캣을 구축하여 가동중에 있습니다. 톰캣 배포는 보통 아래의 과정을 거칩니다. webapps폴더안의 기존 ROOT.war 백업 -> 톰캣 shutdonw -> 기존 ROOT.war, ROOT폴더 제거 -> 새로운 war파일 webapps로 이동 -> 톰캣 실행 이러한 과정을 명령어로 일일이 치는것도 귀찬흥ㄴ데 배포해야할 프로젝트가 여러개 있으면 매우 귀찮습니다. 그래서 이러한 과정을 한번에 실행할 수 있는 쉘스크립트를 만들어 봤습니다. 사전 조건 프로젝트 폴더명이랑 war파일 이름이 같아야 합니다. 톰캣 경로 : /home/tomcat1/... 배포할 war 파일 이륾 : tomcat1.war gradle..