자바에서 데이터를 핸들링하기 위해서는 객체화를 해주는게 편하다. 하지만 네이티브나 프론트엔드에서 원하는대로 데이터가 넘어오는 경우는 드물다. 물론 연동규격서가 서로 오고가는 정규 개발에서는 요청하는대로 보내주기는 하지만, 모든 상황이 그렇지 못하다보니 객체화를 편하게 하기 위한 방법이 필요하다. 다행히 자바에서는 ObjectMapper라는 클래스가 있다. JSON 처리를 위한 라이브러리인 Jackson의 일부이지만, 정말 널리 사용되고 있다. 이 ObjectMapper의 사용법 일부를 소개해 보고자 한다. 1. 설치 Jacskon 라이브러리의 일부이므로 Jackson을 설치한다. pom.xml과 gradle 설치 방법 com.fasterxml.jackson.core jackson-databind 2.11..

이전 게시글(Thread Safety)과 연관된 글로 과부하 로직을 구현하며 고민했던 것에 대한 내용 정리이다. 현재 운영/개발 중인 서버에 보안 로직으로 과부하 제어 로직을 추가하게 됐다. 아래는 과부하 로직의 명세이다. WAS로 들어오는 모든 request를 카운팅한다. 카운팅한 횟수는 response로 빠져나갈 때 차감된다. request가 reponse로 빠져나가지 않으면 count는 계속 누적되고, 특정 임계치 이상이 넘어가면 서버의 과부하 상태를 response로 내보낸다. 위 로직을 구현하기 위해 Apache Tomcat의 멀티쓰레드 구조에 대한 대응으로 Atomic Integer 클래스를 이용해 동시성 이슈를 제어하도록 했다. 이번 글에서는 과부하 제어 로직이 위치할 부분에 대한 쓰려고 한..
서버에서 감당할 수 있는 양보다 많은 요청이 들어온다면, 어떻게 될까? 프론트엔드에서는 앞선 요청이 모두 처리될 때까지 무한 대기 상태에 있거나, 심한 경우 서버가 죽는 경우가 발생할 것이다. 정상적으로 처리되어 대기상태가 빠르게 해결되면 다행이지만, 프론트엔드 단에서 요청할때 걸려있는 시간 내에 응답이 나가지 않으면, time out으로 에러 처리를 해버릴 수도 있다. 그렇게 된다면 필요한 데이터가 소실 될 수도 있고, 서비스 로직 단에서 중단되버려 데이터가 꼬여 다음 요청을 정상적으로 처리하지 못할 수도 있다. 그렇다면 서버에서는 프론트엔드에 "지금 과도하게 요청이 몰려 있어"를 알려줄 필요가 있다. 빌드업이 길었는데, 요약하면 서버에서 과부하 제어를 하기 위해 요청이 과하게 몰렸을 때 응답코드를 내..

서버에 과부하 로직을 반영하고, 임의로 임계치를 올려놓고 테스트하는건 올바른 테스트라고 할 수 없다. 과부하 테스트를 하려면 서버에 요청을 빠르게 엄청나게 많은 양을 보내야 한다. 실제 요청을 만들어 보낼 수 없을 때, Apache Jmeter를 사용하면 된다. 1. Jmeter 란? 앞서 언급한 것 처럼 서버의 성능을 측정할 때 쓰는 툴이다. 대표적으로 스트레스 테스트라고 하는 테스트를 하는데 쓰이고, 서버가 짧은 시간에 얼마나 많은 요청을 처리할 수 있는지 테스트하고 결과를 모니터링 하는데 주로 쓰인다. 이외에도 다양한 기능이 있지만 그건 홈페이지로 가서 알아보도록 하자. 2. 설치 제목에서처럼 윈도우 10 환경에서 설치할 것이다. 홈페이지에서 Binaries 설치 Requries Java 8+라고 ..

Spring Boot가 보편화되면서 많은 부분들이 뒤로 숨겨지게 되었지만, 현재 담당하고 있는 서비스는 Spring MVC로 구현되어 있어 Spring MVC project에는 Spring Boot보다 많은 정보들을 xml파일로 확인할 수 있었다. 사실 Client 단부터 이야기를 시작해야 시작과 끝이 잘 맺어질 수 있을 것 같지만, 아직은 서버사이드에 치중해서 공부 중이니 DispatcherServlet을 기준으로 작성해보려고한다. 아직 공부하는 단계니 계속해서 내용은 보완해 나가야할 것 같다. DispatcherServlet이란? 갑자기 DispatcherServlet부터 이야기를 시작하겠다하면 의아할 수 있다. 구현부만 생각한다면 개발자는 스프링에서 제공하는 기능인 DispatcherServlet를..

서버사이드에서 개발하다보면, 객체 컨벤션이 중요하다고 느끼는 시점이 온다.(내가 그 시점인 것 같다..) 가장 먼저 눈에 띄는건 DAO, DTO, VO인데, 세 가지의 객체의 분류가 꽤나 애매하다. 따로 표준화 되어 있지도 않고 POJO라고 불리는 일반적인 자바 객체로 만들어지기 때문이다. 간단하게 내용을 한번 정리하고 가보려 한다. 1. DAO(Data Access Object) 사실 DAO의 역할은 명확하다. 이름부터가 Data Access Object인 것을 보면 알 수 있듯이, 실제로 DB에 접근하는 역할을 하는 객체 생성 디자인 패턴이다. 데이터베이스에 추출 및 저장하는 방법에 대한 세부 정보를 객체로 추상화하는데 사용되며 JDBC를 통해 구현할 경우 CRUD를 처리하는 매서드를 가지고 있는 경..

1. API 란? 웹 개발을 하다보면 가장 많이 듣는 용어 중 하나가 API일 것이다. 그래서 API가 뭐냐? 라고 물으면, 어디서부터 설명해야할까 고민에 쌓이게 된다. API(application programming interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다. 출처 : 위키백과 위키 백과에서 가져온 글만 봐서는 무슨 말인지 와닿지 않는다. 그래서 내가 남들에게 설명할 때는 원하는 정보를 서버나 프로그램에 요청하기 위한 입력 정보 작성 규칙 이라고 한줄로 설명한다. 포괄적인 의미를 담고 있기 때문에 한줄 요약이 틀릴 수 있지만, 개인적으..
- Total
- Today
- Yesterday
- S3
- AWS EC2
- lambda
- 스프링부트
- 람다
- Spring
- JWT
- 인프런
- CORS
- Redis
- springboot
- AOP
- GIT
- 후쿠오카
- EKS
- AWS
- ecs
- Kotlin
- 오블완
- OpenAI
- Log
- terraform
- CloudFront
- serverless
- ChatGPT
- elasticsearch
- cache
- docker
- java
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |