[Spring Boot] Spring-REST-Docs로 자동으로 API 문서화
·
개발/Spring Boot
Spring REST Docs 모든 코드는 Github에 있습니다. REST Docs란? 이름 그대로 REST 문서이다. REST API를 문서화하여 input, output, 파라미터 세부정보 등을 팀원과 공유할 수 있다. REST Docs는 테스트 코드를 통과하여야 문서로 작성되기 때문에 검증된 문서를 작성할 수 있다. REST Docs를 선택한 이유? Spring에서 문서화를 할때 Swagger와 Rest Docs를 많이 사용한다. 개인적으로 Swagger UI가 더 보기 좋다. 그리고 Swagger는 curl을 통해 API를 바로 테스트 해볼 수 있지만 REST Docs는 단순히 문서만 제공한다. 여기까지 보고 나는 Swagger로 해야겠다는 생각을 하고 어떻게 코드를 작성하나 찾아봤다. 근데 S..
[정리] 타입에 대한 생각
·
개발/정리
타입 추론이란 명시적인 타입 표기가 없을때 타입을 자동으로 결정하고 코드를 해석하는 것이다. 대표적으로 자바스크립트가 있다. 타입을 자동으로 결정하기 때문에 타입에 대하여 많이 신경쓰지 않아도 코드를 작성할 수 있다. 처음 프로그래밍을 입문하기에는 타입이 없는것이 굉장히 편하다. 나 또한 자바스크립트로 개발을 처음 시작하였고 타입을 신경 안쓰는 것이 매우 좋았다. let a = "111"; console.log(typeof a); // string a = a * 1; console.log(typeof a); // number console.log(a); // 111 string으로 만들었던 변수 a를 1을 곱해서 number로 바꾸어 활용하기도 했다. 이때까진 타입을 쓰는 언어를 한번도 다루지 않았기 때..
[Database] MYSQL - VARCHAR vs TEXT
·
개발/Database
게시글 작성시 DB저장시 내용부분의 타입은 뭘로 쓸지 VARCHAR로 하면 길이는 얼마나 줘야할지 고민했다. 이참에 VARCHAR와 TEXT의 차이를 알아보고 앞으로 어떤 타입을 적용시키는게 좋을까를 정리하려고 한다. 모든 테이블은 InnoDB를 기반으로 한다. 1. VARCHAR varchar은 variable character 즉 가변적인 캐릭터이다. char 타입과 비교해보면 char 타입은 고정 크기이고 varchar은 가변 크기인 것이다. varchar를 설정할때 항상 괄호 안에 있는 숫자가 글자 수인지 바이트 수 인지 헷갈렸다. -> 글자 수라고 한다. 즉 varchar(255) 라고 설정하면 255자 이하의 문자열을 사용할 수 있다. varchar은 최대 65535개의 문자열을 저장할 수 있..
[React] Redux vs Recoil
·
개발/React
모든 코드는 Github에 저장되어 있습니다. 나는 리액트로 개발을 할때 redux밖에 사용하지 않았었다. Redux는 검증되어있는 느낌이었고 커뮤니티 풀도 Redux가 우세했기 때문에 처음에 Redux를 공부하여 Redux만 사용했다. 최근 React-query를 사용하여 서버데이터와 클라이언트 내부데이터의 상태관리를 나누는 방법으로 개발을 하고 있다. 그래서 내부 상태저장을 할때 상대적으로 코드가 적은 recoil에 관심을 가지게 되었고 redux와 recoil의 차이점을 알아보려고 한다. 1. Redux 기존 양방향 데이터 흐름 Meta(전 Facebook)는 상태관리 문제를 해결하기 위해 Flux 패턴을 만들어 양방향 데이터 흐름에서 벗어나 단방향으로만 데이터를 변경할 수 있도록 만들었다. Red..
[Devops] spring boot 블루/그린 무중단 배포 (gitlab ci, docker, nginx)
·
개발/Devops
spring boot로 무중단 배포를 이용하려고 한다. spring boot도 code deploy, elastic beanstalk 등등 무중단 배포 방법은 많다. 그중에서도 블루/그린 방법으로 docker를 이용하고 nginx도 공부할겸 nginx로 배포하려고 한다. 먼저 배포 과정은 아래와 같다. (1) gitlab에 push (2) 8080에 실행되고 있는 spring boot 멈춘 후 업데이트 (3) 8080 업데이트 후 실행 (4) 8081 멈춘후 업데이트 이러한 배포 방식을 블루/그린 이라고 하며 블루 컨테이너를 주로 보여주고 업데이트시에만 그린 컨테이너를 이용하는 방법이다. 그렇게 하여 기존 제공되는 서비스는 멈추지 않고 변경사항을 적용할 수 있다. 나는 업데이트 적용 후 green을 멈추..
[Devops] react 무중단 배포 (gitlab ci, s3, cloudfront)
·
개발/Devops
react 프로젝트를 gitlab ci 를 이용하여 s3에 저장 후 cloudfront에 배포한 경험을 정리한다. 깃허브액션, 도커를 이용하여 자동배포는 설정해본적이 있지만 서비스가 중단되지 않는 무중단 배포는 아니었다. 이번엔 서비스가 중단되지 않는 무중단 배포를 설정해보려고 한다. react를 무중단 배포 하는 방법은 여러가지가 있다. Cloudfront로 ec2를 따로 관리 안해줘도 된다는 점과 protect 정책, cdn 등 많은 걸 지원해줘서 cloudfront로 결정했다. 배포 과정은 다음과 같다. 1. gitlab github와는 다르게 gitlab은 runner를 따로 설치해서 사용해야 한다. 그래서 먼저 gitlab runner를 등록해야 한다. 처음 이부분을 모르고 계속 실패했다가 나중..