목록Dev (39)
개발자 되어버리기
JWT의 장점은 세션을 사용하지 않기에 서버의 자원을 효과적으로 사용할 수 있다는 것에 장점이 있습니다. 장점도 분명 존재하지만 단점도 있고 그 단점중 하나는 로그아웃에 관련된 내용입니다. 우선 도커를 이용해 간단하게 Redis를 설치해보겠습니다. Redis는 키-값 기반의 인메모리 기반 데이터베이스 입니다. 메모리에 직접 저장이 되기에 껐다키면 날라가지만 인메모리 특성상 매우 좋은 성능을 제공합니다. 서버컴은 껏다 킬 일이 없으니..? jwt같은거 사용할 때 많이 사용 합니다. 우선 도커가 설치되어 있지 않다면 우분투에 도커부터 설치를 진행해야 합니다. sudo apt install docker-ce 이후에는 가볍게 사용할 수 있는 Redis를 설치합니다. docker run -i -t --name r..
컨테이너가 자원을 아무런 제약 없이 쓴다면 자칫 호스트의 자원을 전부 써버리면 다른 시스템이 동작을 멈출 수 있습니다. 컨테이너의 자원 제한을 확인하는 방법은 아래 명령어 입니다. docker inspect myubuntu 기존에 있는 컨테이너의 자원할당량을 변경하고자 한다면 docker update (변경할 자원 제한) (컨테이너 이름) 입니다. 메모리를 1GB로 제한한다고 하면 아래 명령어처럼 입력하시면 됩니다. docker update --memory="1g" myubuntu CPU를 제한 하고자 한다면 아래 명령어를 입력하시면 됩니다. docker update --cpu-shares 1024 myubuntu 위 명령어에서 1024가 의미하는 것은 cpu 하나의 할당에서 1의 비중을 뜻합니다. 만약..
도커에서는 이미지로 컨테이너를 생성하면 이미지는 읽기 전용이 되며 컨네이너의 변경사항만 별도로 저장해서 각 컨테이너의 정보를 보존 합니다. 그렇기에 컨테이너를 삭제하면 기존에 컨테이너에 있던 데이터들까지 같이 삭제가 됩니다. 이를 방지하기 위해 컨테이너의 데이터를 영속적 데이터로 활용할 수 있는 몇가지 방법이 있습니다. 그중 딱 하나만 글로 적어두고자 합니다. 가장 간단한 방법인듯 합니다. docker volume create --name myvolume ┖ 위처럼 docker volume 명령어를 이용하여 볼륨을 생성합니다. 이후 우분투를 생성하고 접속할 때 -v 옵션을 주어서 볼륨 컨테이너를 연동시킵니다. docker run -i -t --name myvolume_1 -v myvolume:/root/..
구글쪽 smtp 쓰는것은 많이 나와있고 생각보다 쉽습니다. 구글이 아닌 네이버 쪽은 어떻게 할지 간단하게 포스팅해보겠습니다. 1. 설정으로 들어갑니다. 2. 위 사진과 같이 설정을 해줍니다. 이후에는 yml에 네이버 계정 관련된 정보를 넣어줍니다. email: host: smtp.naver.com username: myId password: myPassword port: naverport 저희가 쓰는 포트는 465 포트 입니다. 그 다음은 yml 데이터를 읽어올 클래스를 작성 합니다. @Configuration // yml 파일에서 가져올 변수 이름을 명시해준다. @ConfigurationProperties(prefix = "email") @Setter @Getter public class Applica..
사내에서 문자 서비스를 구축해야해서 네이버 nens를 다루게 되었는데 제가 미숙한 탓에 헤더 세팅하는데 어려움이 있었습니다. (혼자 핑계로 네이버 API 헤더 세팅 어렵다고.. 꿍시렁) 부디 이 글 보시고 헤더 세팅하시는데 어려움을 덜어내셨으면 좋겠습니다. 저는 막상 저 예제만 보고는 잘 모르겠더라고요... 결론은 헤더의 내용을 암호화하여 다시 헤더에 넣어라! 이런 얘기더랍니다... 소스코드 부터 확인해보겠습니다. public String makeSignature(Long time) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException { String space = " ";// one space String n..
실제 서버에서 인증서 발급받고 그 인증서를 SFTP로 가져오자니 너무 귀찮고 번거롭더라고요.(로컬이니 최초 한번만 하면 되긴 하지만) 그래도 알아두면 좋은 지식인듯 하여 포스팅해두고자 합니다. 윈도우 WSL2 환경이나 아니면 인텔리제이 스프링부트 프로젝트 안에서 쓰셔도 무방합니다. keytool -genkey -alias bns-ssl -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650 이후에 이거저거 입력하라고 나오는데 초기에 패스워드만 알맞게 입력하시면 나머지는 대충 하셔도 문제 없습니다. server: ssl: enabled: true key-store: keystore.p12 key-store-passw..
과거에는 거의 모든것이 세션기반이었기에 서버에 부담이 많이 갔었고 때문에 서버가 자주 장애를 일으키곤 했습니다. 하지만 요즘 추세는 세션기반보다는 JWT로 서버에 부담이 덜 가는 방식을 많이 사용하고 있습니다. RSA 키교환 방식으로 알고리즘을 RS256 으로 적용해보겠습니다. -- RS, HS 관련 혼동되는 것이 있어 추후에 수정하도록 하겠습니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:sp..
백엔드쪽에서 RSET API 개발하고 나면 프론트엔드와 협업을 위해 Parameter, Header, Body 등에 대한 설명을 편하게 웹문서화 시켜주는 라이브러리입니다. SpringBoot 2.2.7 버전이며 Gradle 기준 입니다. // api 문서화 라이브러리 swagger 추가 compile 'io.springfox:springfox-swagger2:2.9.2' compile 'io.springfox:springfox-swagger-ui:2.9.2' ┖ 우선 swagger 라이브러리에 대한 의존성을 gradle에 추가해줍니다. import com.google.common.collect.Lists; import org.springframework.context.annotation.Bean; imp..