![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bieEuN/btrXaEF9XQO/6lquKtOaBkTJLjwanxrUm1/img.png)
이전에 작성한 암호화 관련 글을 쓴 적이 있는데, 어떻게 적용할 것인가에 대해서만 작성했지, 암호화를 어떻게 구현할 것인가에 대한 내용이 빠져서 추가로 정리해보려고 한다. 내가 사용하는 Java 기준이다. 또, 안드로이드-Spring 서버 간 암복호화는 문제가 없었지만, iOS-Spring 간의 암복화에는 문제가 있었고, 아직 해결을 하지 못했다. 그 내용도 정리해보려고 한다. 1. KeyGenerator 프로젝트에서 RSA를 사용했기 때문에, RSA를 기준으로 키를 생성했다. java.security.KeyPairGenerator 클래스에서 instance를 만들어 RSA 키를 생성한다. SecureRandom secureRandom = new SecureRandom(); KeyPairGenerator..
nested exception is org.apache.ibatis.reflection.ReflectionException: Error instantiating class 객체명 with invalid types () or values (). Cause: java.lang.NoSuchMethodException: 객체명 () Mybatis에서 객체를 매핑할때 발생하는 에러로 기본생성자가 없으면 발생하는 에러이다. setter와 AllargsConstructor의 존재와 상관없이 Mybatis에서 조회 후 객체를 매핑할때 빈 생성자를 반드시 만들어줘야한다. Lombok을 사용중이면 @NoArgsConstructor 설정해주면 된다. @Builder @Getter @Setter @AllArgsConstruc..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b0pwea/btrW7TjLGza/R2TIvvE6EuHAUGtPQ1CjkK/img.png)
1. 암호화의 필요성과 구분 라이브 서비스를 제공하다보면, 사용자의 개인정보를 서버와 주고 받을 일이 생긴다. 이 때 나쁜 마음을 먹은 누군가가 서버와 클라이언트가 주고 받는 패킷을 가로채버린다면? 개인 정보가 그대로 누출된다. 때문에, 서버와 클라이언트가 중요한 데이터를 주고 받을 때는 암호화를 해줄 필요가 있다. 또, 서비스가 로그인/로그아웃 기능을 제공한다면 비밀번호를 서버에 저장해야한다. 그런데 이 비밀번호가 암호화가 되어있지 않다면? DB가 털리면 모든 계정 정보가 털리게 된다. 당연하지만, 비밀번호도 암호화를 해줘야한다. 하지만, 두 암호화엔 차이가 있다. 라이브 서비스에서 암호화된 개인정보는 대부분 이를 재활용하여 다른 정보를 제공하기 위함이라 암호화된 정보를 복호화할 수 있어야한다. 비밀번..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/baWa5D/btrWQXmDfil/k4aGe9CKSgextOIEirT0Fk/img.png)
테스트 데이터를 다량 생성해야 할 일이 생겼다. DB에 INSERT문으로 쭉 밀어넣기엔, 동시에 다른 테이블에도 데이터가 생성되야 했기 때문에 API 요청으로 처리하는게 쉬워보여서 평소에 API 요청과 Response 확인에 사용하는 포스트맨(Postman)에 이런 기능은 없나... 찾아보게 되었고 다행히도 있었다. 포스트맨의 RUNNER 기능인데, 생각보다 어렵지 않고 범용적으로 쓸만한 기능이었다. 매뉴얼처럼 작성해봤다. 1. 포스트맨 RUNNER 사용법 1-1. Collection 만들기 빨간 동그라미를 클릭해 Collection을 만들어준다. 1-2. API 요청 데이터 생성 POST 방식의 request body로 중괄호로 묶어서 변수명을 지정할 수 있다. csv 파일의 1번 컬럼을 저 변수명으로..
자바에서 데이터를 핸들링하기 위해서는 객체화를 해주는게 편하다. 하지만 네이티브나 프론트엔드에서 원하는대로 데이터가 넘어오는 경우는 드물다. 물론 연동규격서가 서로 오고가는 정규 개발에서는 요청하는대로 보내주기는 하지만, 모든 상황이 그렇지 못하다보니 객체화를 편하게 하기 위한 방법이 필요하다. 다행히 자바에서는 ObjectMapper라는 클래스가 있다. JSON 처리를 위한 라이브러리인 Jackson의 일부이지만, 정말 널리 사용되고 있다. 이 ObjectMapper의 사용법 일부를 소개해 보고자 한다. 1. 설치 Jacskon 라이브러리의 일부이므로 Jackson을 설치한다. pom.xml과 gradle 설치 방법 com.fasterxml.jackson.core jackson-databind 2.11..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/32nBe/btrWSwO0Ros/LjZk40vHGZyXxqU8S4eMbK/img.png)
이전 게시글(Thread Safety)과 연관된 글로 과부하 로직을 구현하며 고민했던 것에 대한 내용 정리이다. 현재 운영/개발 중인 서버에 보안 로직으로 과부하 제어 로직을 추가하게 됐다. 아래는 과부하 로직의 명세이다. WAS로 들어오는 모든 request를 카운팅한다. 카운팅한 횟수는 response로 빠져나갈 때 차감된다. request가 reponse로 빠져나가지 않으면 count는 계속 누적되고, 특정 임계치 이상이 넘어가면 서버의 과부하 상태를 response로 내보낸다. 위 로직을 구현하기 위해 Apache Tomcat의 멀티쓰레드 구조에 대한 대응으로 Atomic Integer 클래스를 이용해 동시성 이슈를 제어하도록 했다. 이번 글에서는 과부하 제어 로직이 위치할 부분에 대한 쓰려고 한..
서버에서 감당할 수 있는 양보다 많은 요청이 들어온다면, 어떻게 될까? 프론트엔드에서는 앞선 요청이 모두 처리될 때까지 무한 대기 상태에 있거나, 심한 경우 서버가 죽는 경우가 발생할 것이다. 정상적으로 처리되어 대기상태가 빠르게 해결되면 다행이지만, 프론트엔드 단에서 요청할때 걸려있는 시간 내에 응답이 나가지 않으면, time out으로 에러 처리를 해버릴 수도 있다. 그렇게 된다면 필요한 데이터가 소실 될 수도 있고, 서비스 로직 단에서 중단되버려 데이터가 꼬여 다음 요청을 정상적으로 처리하지 못할 수도 있다. 그렇다면 서버에서는 프론트엔드에 "지금 과도하게 요청이 몰려 있어"를 알려줄 필요가 있다. 빌드업이 길었는데, 요약하면 서버에서 과부하 제어를 하기 위해 요청이 과하게 몰렸을 때 응답코드를 내..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/eh4d8c/btrWRymlu6i/HASwy1k6Sk5bvWpOpYKVBk/img.png)
서버에 과부하 로직을 반영하고, 임의로 임계치를 올려놓고 테스트하는건 올바른 테스트라고 할 수 없다. 과부하 테스트를 하려면 서버에 요청을 빠르게 엄청나게 많은 양을 보내야 한다. 실제 요청을 만들어 보낼 수 없을 때, Apache Jmeter를 사용하면 된다. 1. Jmeter 란? 앞서 언급한 것 처럼 서버의 성능을 측정할 때 쓰는 툴이다. 대표적으로 스트레스 테스트라고 하는 테스트를 하는데 쓰이고, 서버가 짧은 시간에 얼마나 많은 요청을 처리할 수 있는지 테스트하고 결과를 모니터링 하는데 주로 쓰인다. 이외에도 다양한 기능이 있지만 그건 홈페이지로 가서 알아보도록 하자. 2. 설치 제목에서처럼 윈도우 10 환경에서 설치할 것이다. 홈페이지에서 Binaries 설치 Requries Java 8+라고 ..
- Total
- Today
- Yesterday
- S3
- openAI API
- 람다
- cache
- JWT
- terraform
- lambda
- AWS
- java
- Elastic cloud
- 스프링부트
- Spring
- 티스토리챌린지
- docker
- serverless
- GIT
- MySQL
- OpenFeign
- springboot
- Log
- Kotlin
- EKS
- ChatGPT
- AOP
- elasticsearch
- OpenAI
- CloudFront
- AWS EC2
- 후쿠오카
- 오블완
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |