IT 55

[Spring] WebFlux 테스트 코드 작성

Spring 테스트 코드 관련하여 참고하기 위해 찾아보는 가운데, Spring MVC 환경에서의 테스트 코드에 대한 글은 많이 있지만 WebFlux 환경에서의 테스트 코드 글의 갯수는 적은 것 같아 직접 포스팅하고자 한다. - Environment > Java 11  - HTTP 메서드 > GET, POST, PUT Layer 별로 테스트 코드를 작성하였고, 그 순서는 다음과 같다.- Handler (Router) -> Service -> Repository 그리고 given / when / then 구조에 맞춰 작성해 보았다. 먼저 GET 메서드 기준, Layer 별로 테스트 코드를 작성한다. 1. Handler@Transactional@SpringBootTest@AutoConfigureWebTestC..

IT/Spring 2024.11.27

[AWS] ECS Fargate 도입기

회사에서 AWS lightsail 을 주로 사용하다가 비용 감소 및 관리 효율화 목적으로 ECS Fargate 로의 전환을 시도했다. 그 과정에서 수많은 시행착오를 겪었고 이를 공유하여 도움이 되었으면 하는 마음에서 글을 쓰고자 한다. @ VPC 영역  1. Subnet- VPC 에 Public Subnet 2개, Private Subnet 2개를 각각 생성한다. (기존에 생성된 Subnet 존재 시 활용 가능 / IPv4 CIDR 설정 시 VPC 의 IPv4 CIDR 고려 필요)- Public 과 Private 설정에 따라 활용 목적이 다르다.- VPC 에 가용영역이 4개 존재했고, 2개의 가용영역(c,d)에 각각 Public, Private Subnet 을 1개씩 배치하였다.  2. Routing T..

IT/AWS 2024.11.27

[Spring] Spring Framework vs. Spring Boot

회사에서 Spring Framework 를 사용하다가, Spring Boot 로 전환했던 경험이 있다. 그리고 현재는 Spring Boot 를 사용하는 곳으로 이직을 하여 커리어를 쌓고 있는 중이다.그 과정에서 Spring Boot 가 막연히 편하다, 생산성이 좋다, 레퍼런스 자료가 많다 등의 생각을 갖고 있었는데 Spring Framework 와 비교하여 어떤 점을 갖고 있는지 정리할 필요가 있다고 생각이 들어 이 글을 쓰게 되었다.그러면 구체적으로 장점을 나열하면 다음과 같다. 1. Jar 파일로 편리한 실행 가능- Spring Framework 의 경우 개발한 애플리케이션을 War 파일로 만들어 웹 애플리케이션 서버에 배포해야 하나, Spring Boot 의 경우 Tomcat 이나 Jetty 등의 ..

IT/Spring 2024.11.14

[CS] 예외 처리

예외 처리의 정의 & 체크 예외 vs. 언체크 예외 & 자주 쓰이는 표준 예외 클래스에 대해 정리하고자 한다. 1. 예외 처리란? - 프로그램 실행 시 발생할 수 있는 예외에 대비하는 것으로 프로그램의 비정상 종료를 막고 실행 상태를 유지하는 것 2. 체크 예외 vs. 언체크 예외 - 체크 예외 - 상속: Exception - 예외 확인 시점: 컴파일 단계 - 예외 처리: O - 장점: 개발자의 실수 감소 - 단점: 번거로움 / 레이어 간의 의존성 증가 / Stream 내에서 사용 X - 언체크 예외 - 상속: Runtime Exception - 예외 확인 시점: 실행 단계 - 예외 처리: X - 장점: 레이어 간의 의존성 감소 - 단점: 개발자의 실수 증가 3. 자주 쓰이는 표준 예외 클래스 - IOE..

IT/CS 2024.03.24

[CS] Cookie

Cookie 의 개념, 특징, 사용 목적에 대해 작성하고자 한다. 1. 개념 - Client 에 저장하는 key-value 형태의 작은 데이터 파일 2. 특징 - 브라우저 단위로 Cookie 생성 - 다른 도메인을 대신하여 Cookie 발급 불가 - 만료 시간까지 상태 정보 유지 3. 사용 목적 - 웹 사이트 재방문 시 효율적으로 서비스를 제공하기 위함 4. 출처 - https://www.youtube.com/watch?v=XgcCkcKGbys [ 10분 테코톡 - 디투의 쿠키와 세션 ]

IT/CS 2024.03.17

[CS] Connection-Timeout vs. Read-Timeout

Connection-Timeout 과 Read-Timeout 의 개념 비교에 대해 글을 쓰고자 한다. 1. Connection-Timeout - 종단 간 연결하는데 소요되는 최대 시간 - 이 시간을 넘기게 되면 연결할 수 없는 것으로 판단하고 에러 발생 2. Read-Timeout - 연결된 종단 간에 데이터를 주고 받을 때 소요되는 최대 시간 - 이 시간을 넘기게 되면 데이터를 주고 받을 수 없는 것으로 판단하고 에러 발생 * 참고 여기서, "연결"은 TCP 3-way handshake 를 통해 TCP 연결이 생성되는 것을 의미한다. 3. 출처 - https://alden-kang.tistory.com/20

IT/CS 2024.03.17

[CS] HTTP/1.1 과 HTTP/2

HTTP/1.1 과 HTTP/2, 각각의 특징에 대해 작성하고자 한다. 1. HTTP/1.1 - Persistent Connection > 지정한 timeout 동안 커넥션을 닫지 않는 방식 - Pipelining > 하나의 커넥션에서 응답을 기다리지 않고 순차적인 여러 요청을 연속적으로 보내 그 순서에 맞춰 응답을 받는 방식으로 지연 시간을 줄이는 방법 - Head of Line Blocking 문제 존재 - Header 구조의 중복 2. HTTP/2 - HTTP 메시지 전송 방식의 변화 > 바이너리 프레이밍 계층 사용 . 파싱, 전송 속도 증가 & 오류 발생 가능성 감소 - 요청과 응답의 다중화 > Head of Line Blocking 문제 해결 - 리소스 간 우선 순위를 설정 가능 - Server..

IT/CS 2024.03.17

[MySQL] GROUP BY 사용법

생각을 많이 하여 GROUP BY 개념을 사용하게 되는 케이스가 생겨 정리에 대한 필요성이 생겨 포스팅하고자 한다. > 어느 회사에서, 개인별로 자신과 동일한 부서에 일하는 직원 수가 몇 명인지 조회하는 쿼리가 필요하다. EMPLOYEES 테이블에서 ID, 이름(NAME), 부서(DEPARTMENT) 정보가 주어질 때 쿼리를 작성해보자. > SELECT e.ID, e.NAME, COUNT(c.ID) AS COUNT_COWORKER FROM EMPLOYEES e JOIN EMPLOYEES c ON e.DEPARTMENT = c.DEPARTMENT AND e.ID c.ID GROUP BY e.ID, e.NAME ORDER BY e.ID ASC ; 즉, 자체 테이블을 자가 결합하는 방법을 사용한다.

IT/SQL 2024.03.09

[MySQL] JSON_TABLE

기존 회사에선 Oracle 을 사용하다가, 최근에 이직한 회사에서 MySQL 을 사용하며 새로운 점들을 익히고 있다. 그러던 와중에 JSON Type 의 데이터를 파싱 등의 처리하는 작업을 맡게 되어 진행하게 되었다. 그 중 기록해 두었다가 추후에 계속 활용할 수 있도록 하기 위해 포스팅을 하려고 한다. -- 자세한 내용은 다음과 같다. -- JSON Type 의 데이터가 [{"id": 1, "item": "apple"}, {"id": 2, "item": "grape"} ... ] 등의 형태로 되어 있다고 가정한다. 이 때 아래와 같이 테이블 형태를 변경하고자 한다. (As-Is) fruit_no fruit_items ------------------------------------------------..

IT/SQL 2023.09.14

[CS] Real-Time Web

Real-Time Web, 그리고 이와 관련된 개념까지 같이 정리하고자 한다. 1. Real-Time Web 이란? - 인터넷에서 사용자들로 하여금 창작자가 정보를 만들어 내는, 즉시 수신할 수 있도록 하는 기술 혹은 서비스 2. 관련 기술의 특징 - Polling (폴링) - 전송할 데이터의 유무에 관계 없이 주기적으로 요청을 수행하는 방법 - 클라이언트는 지정된 시간 간격에 맞춰 서버에 지속적인 요청을 보냄 - 서버는 각 요청 마다 가용 데이터나 데이터가 없는 경우 빈 데이터를 보내거나 실패와 같은 적절한 응답을 함 - 데이터의 유무에 관계 없이 요청하여 불필요한 네트워크 비용이 발생 - 클라이언트와 서버 자원을 많이 낭비함 - 요청의 간격이 길면 실시간성이 떨어짐 - 반대로 간격이 짧으면 많은 자원..

IT/CS 2023.06.03