본문 바로가기

web59

[REST API] Serializable 정말 구현해야 할까? 개발 완료 후 시간이 좀 남아돌아 다른사람들 소스를 보다보니 DTO에 죄다 Serializable 을 implement 해놨음.. 엇? 외부로 직렬화해서 내보내는건가? 싶어 확인해보다 내가 개념 정리하려고 쓰는 포스팅. 직렬화란?(Serializable) 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 바이트(byte) 형태로 데이터 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 아울러서 이야기한다. 시스템적으로 이야기하자면 JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술과 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 .. 2023. 10. 18.
파일다운로드 시 PDF 워터마크 처리하기 현재 진행하고 있는 프로젝트에서 나한테 말도 없이 파일다운로드 시 워터마크처리 하는걸 날 끼워 놓곤 던져줬다. 그것도 기간도 3일주더라 ㅋㅋㅋ 그래서 2일만에 해줬다. 그게 뭐라고 ㅋㅋㅋ 시간이 남아서 포스팅에 개발과정을 정리해보기로 했다. Spring Boot 3.1.x + Gradle + IntelliJ + OPENJDK17 RESTfulAPI AWS S3 Bucket 일단 PDF 파일을 다루기 위해 지원되는 라이브러리를 찾다보니 대표적으로 iText 를 제일 많이 이용하더라 나는 무료 버전인 iText5.5.13 버전을 이용하기로 하였다. 1. Gradle에 추가 implementation 'com.itextpdf:itextpdf:5.5.13' implementation 'com.amazonaws:.. 2023. 10. 17.
Properties 암호화하기 지금 하고 있는 프로젝트에서 Aws Config 를 세팅하는 도중 accessKey 와 secretKey 를 프로퍼티에 등록하려고 한다. 근데 너무 날것(?) 으로 입력하면 보안이슈도 있고... 뭔가 하수같단말이지!!! 그래서 해당값을 Jasypt(Java Simplified Encryption) 를 이용하여 암호화해서 넣어보려한다. 우선 간단하게 암호화해서 입력할수 있도록 간단한 function 작성을 위해 Jasypt 라이브러리 추가 implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' 그런다음 암호화 함수작성 public static void encProcess() { StandardPBEStringEncryptor s.. 2023. 10. 12.
JWT에 대한 고찰 로그인시 JWT 를 어디다 보관해야할지, 어떻게 보관해야 안전할 지 골똘히 생각하다가 정리하는 포스팅.. 일단 JWT 를 왜쓰는걸까? 남들이 다 써서^^? 걍 기존 시스템이 jwt라? 위에서 시켜서?? 물론 남들이 많이 쓰는덴 다 이유가 있다. JWT 는 stateless 해서 쓴다. 사용자 정보를 DB에 저장해놓고 요청할때 마다 I/O 해서 검증하는건 stateful 한 방식인 세션방식이다. On-premise(온-프레미스) → Cloud(클라우드) 시스템으로 넘어가면서 수평적확장(Horizontal Scale Out) 방식을 쓴다. 즉, 사용자가 1000명이었을 땐 서버가 1개였다가 갑자기 급증해서 10000명이 되면 클라우드 플랫폼이 이를 감지하여 서버를 10개 늘리는걸 수평적 확장이라 한다. 이게.. 2023. 9. 13.