분류 전체보기 48

Springboot 레이어드 아키텍처에서 테스트 코드 작성하기

개요 Layered Architecture에 대해 간략하게 내용을 정리한 후 테스트하기 좋은 상태로 변환해 가는 과정에 대해서 보여주고자 한다. Layered Architecture 란? 가장 일반적인 아키텍처 패턴으로, n-tier 아키텍처 패턴이라고도 알려져 있다. 계층화 아키텍처 패턴은 각각의 수평적인 계층으로 구성된 컴포넌트들을 가지고 있으며, 각 계층은 애플리케이션 내에서 특정한 역할을 수행한다. 계층화 아키텍처 패턴은 몇 개의 표준 계층으로 구성되어 있는데, 주로 프레젠테이션, 비즈니스, 영속성, 데이터베이스 등의 계층으로 구성된다. 프레젠테이션 계층, 비즈니스 계층, 영속성 계층, 데이터베이스 계층이라는 네 가지 계층이 일반적으로 존재한다. - 프레젠테이션 계층은 사용자 인터페이스와 브라우저..

Project 2023.07.12

엔티티의 컬럼은 어떤 타입을 써야할까?

개요 @Entity @Table(name = "USER") public class User { @Id @Column(name = "user_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name") private String name; @Column(name = "phone_number") private Integer phoneNumber; } 엔티티를 작성하다가 문득 컬럼 타입을 원시형으로 쓰지않고 참조형으로 사용하는지 궁금증이 생겼다. 단순한 생각으로는 참조형으로 사용할때 Null이 허용된다는 점인데 각각의 특징을 간략하게 알아보고 타입 선택 전략에 대해 생각해보았다. 요약 불리..

Web/JPA 2023.05.30

다양한(?) 동시성 제어 방법 맛보기

개요 5월쯤이었을까 특정 항공사에서 10000명 정도에 한해 선착순으로 홍콩 무료 항공권 이벤트를 했다. 링크 무료 항공권에 혹해서 이벤트를 참여했는데 뉴스기사에서 10만 명 넘는 사람의 신청자가 몰렸다고 한다. 꽤 많은 사람들이 몰린 이벤트였고 항공사에서 이벤트를 처리하는 방식이 신기했다. 해당 항공사에서 처리한 방식은 클라이언트 요청에 대해 요청비율(RPS)로 제한하는 방식으로 Nginx 같은 웹서버를 통해 요청비율을 넘는 IP주소들은 Queue에 대기시키고 조금씩 그리고 순차적으로 이벤트 페이지에 접속하도록 하는 트래픽 제어하는 방식을 사용한 것 같다. 이는 물론 동시성 제어하는 방식과는 분명히 다른 케이스이지만 많은 사람들이 몰릴 때 어떻게 동시성 제어를 하는 게 좋고 각 특징 그리고 최적의 방법..

Project 2023.05.30

쿠버네티스 - 미니쿠베와 큐브 컨트롤

요약 minkube는 실 운영용 k8s은 너무나도 설정할 것들이 많고 여러개의 서버가 존재하기때문에 개발 환경 및 테스트용으로는 적합하지않다. 그렇기때문에 나온게 minkube(+ k3s) 단 하나의 서버에서 master와 node를 관리할 수 있도록 해줌 kubectl은 쿠버네티스에 명령을 전달하기위한 프로그램 k8s를 활용하기위해서는 마스터 서버 3개 그리고 노드가 다중으로 있어야하기때문에 초기설정이 나무나도 할게 많아서 연습하기에 어렵다 그렇기 때문에 하나의 서버안에서 마스터서버와 노드를 함께 활용하는 즉 마스터서버 (api server, etcd , controller, scheduler) + 노드(proxy, kubelet)를 함께 운영 준비 2 CPUs or more 2GB of free me..

DevOps/Kubernetes 2021.10.25

nvm windows에 설치하기

nvm은? nodejs를 커맨드로 빠른 설치와 다양한 버전을 사용할 수 있게 도와주는 버전 관리 도구 nvm 설치 nvm 설치전 정석적인 nodejs 프로그램은 삭제해주고 진행해야함 nvm-setup.zip을 다운로드 https://github.com/coreybutler/nvm-windows/releases Releases · coreybutler/nvm-windows A node.js version management utility for Windows. Ironically written in Go. - coreybutler/nvm-windows github.com 설치 루트는 반드시 C:\특정경로\nvm으로 설정할 것 기본 제공경로로 설치시 node버전을 변경못하는 오류 있음 nvm Example ..

Web/Node.js 2021.10.24

몽고DB 초기 설정

몽고DB 설치 몽고DB 포트번호 변경 sudo vi /etc/mongod.conf # network interface net: port: 27027 -> 임의의 포트번호로 변경 bindIp: 127.0.0.1 -> 0.0.0.0 ---------------------------- sudo service mongod restart 몽고DB 접속 계정만들기 몽고DB 인증 mongo --port portNumber 계정 추가 > use admin switched to db admin > db.createUser( ... { ... user: "admin", ... pwd: "adminPW", // or cleartext password ... roles: [ { role: "root", db: "admin" ..

DB/Mongo 2021.05.26

node, npm 버전 관리

버전 확인 및 캐시 제거 //버전확인 $ node -v v6.0.0 // 기존에 사용 했을수도 있는 npm cache값을 제거해줍니다. $ sudo npm cache clean -f n 모듈 설치 [ npm n ] n 은 Node.js 버전을 관리해주는 플러그인 //n모듈 설치 $ sudo npm install -g n // node 안정버전 설치 $ sudo n stable //lts버전 설치 $ sudo n lts //특정버전 설치 ex> $ n $ sudo n 10.0.0 //버전삭제 $ sudo n rm 10.0.0 npm 업데이트 //npm 버전 확인 $ npm -v 3.1.0 $ sudo npm i -g npm /usr/local/bin/npm -> /usr/local/lib/node_modu..

Web/Node.js 2021.03.04