| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- input태그
- 스프링 부트
- 반복문
- 시큐리티
- StyleSheet
- 시큐리티 로그인
- gradle
- java
- 싱글톤
- 2차원배열
- 시큐리티 로그아웃
- JAVA11
- codingtest
- javascript
- 리눅스
- css
- 시큐리티로그인
- 프로그래머스
- programmers
- Spring boot
- springboot
- 목록
- html
- 소스트리
- sql
- springSecurity
- 로그인
- security
- 코딩테스트
- Linux
- Today
- Total
목록전체 글 (146)
JAVAIARY
작년 말 진행했던 외부 데이터 분석 업체 API 연동 프로젝트를 회고하며 작성한 글이다.기능 자체는 단순한 데이터 전송 연동이었지만, 개발 과정에서 요구사항 변경이나 비즈니스 확장에 유연하게 대처할 수 있도록 처리 흐름을 어떻게 구조화할지 고민했던 경험을 정리해 보려 한다.1. 프로젝트 개요 및 요구사항 분석주요기능은 자사 PMS(Property Management System) 솔루션의 예약 데이터 중, 노쇼(No Show) 및 예약 취소 고객 데이터를 외부 데이터 분석 업체에 전송하는 것이다. 외부 업체는 이 데이터를 기반으로 취소 수수료 징수 서비스를 제공하는 구조였다.외부 업체 스펙을 분석해보니 데이터를 수신하는 두 가지 방식이 있었다.수신 방식: JSON 방식 (최대 500건) / CSV 방식 ..
최근 운영에서 Oracle DB의 PGA(Process Global Area) Limit 초과로 인한 세션 중단 장애가 꽤 자주 발생하는 것 같다. 이번 장애는 다행히도 AWS RDS의 성능개선 도우미와 스카우터를 통해서 원인을 특정할 수 있었다. 원인은 특정 메뉴 조회 시 사용된 비효율적인 날짜 생성 쿼리였다.🚨 개요 (장애 발생)토요일 밤 12시에 통화하고 있는데 갑자기 슬랙 알림이 왔다. 알고 보니 장애 발생 때문에 나한테 전화하셨었는 데 내가 통화 중으로 떠서 연락 오신 것 ㅋㅋㅋㅋㅋ...급하게 원격에 접속하여 확인해 보니 Oracle DB CPU가 고갈되어 서비스에 장애가 발생하고 있었다.🛠️ 긴급 조치 : 서비스를 살리기 위한 새벽간의 치열한 삽질 기록1차 시도: 각 서버 Tomcat WA..
토요일 오전 7시 50분, 머리맡에서 모르는 번호로 전화가 왔다. 주말 아침의 이른 전화는 대개 좋은 소식이 아니다. 전화를 받아보니 유지보수팀의 긴급 연락이었다.슬랙 Emergency 채널을 확인하니 오전 6시부터 일부 호텔의 로그인 불가 현상이 접수되어 있었다. DB 업체가 먼저 원인을 파악 중이었는데, 우리 예약 연동 API 서버에 INACTIVE 세션이 너무 많다는 분석이 나왔다. 일단 서비스를 재기동해 급한 불을 끄고 나니, 의문이 생겼다."애초에 비활성화 세션들은 왜 죽지 않고 좀비처럼 남아서 DB를 괴롭힌 걸까?"1. 배경우리가 운영하는 예약 연동 API는 외부 CMS(Channel Management System)에서 예약 건을 가져와 우리 시스템(PMS)에 넣어주거나, 반대로 우리 객실 ..
0. 개요API 연동 프로젝트 개발하여 로컬 및 타사 sandbox 환경 테스트 완료.운영 배포 후 운영 서버에서 테스트 유저 지정하여 테스트 진행sandbox 환경, 로컬, Postman에서는 정상적으로 전송되던 데이터가운영 환경에서는 정상적으로 통신되지 않고 아래 오류를 반환했다.javax.net.ssl.SSLException: Received fatal alert: record_overflow개발 스택: JDK 11 , SpringBoot , 외부 API(타사) 로 JSON 데이터 전송하는 API원인 분석운영 환경에서만 `record_overflow` 오류가 발생했고, 로컬 및 Sandbox 환경에서는 동일한 현상이 재현되지 않았기 때문에,우선 `record_overflow` 오류가 어떤 상황에서 ..
갑자기 AWS 하는 이유? 사내 해커톤 나가는데 AWS 관련이라서IAM(Identity & Access Management) 이란?간단하게 말해서 통합 계정 관리SSO(Single Sign On) , EAM (Extranet Access Management) 보다 포괄적으로 확장된 개념업무 프로세스를 정의하고 관리하는 인프라왜 IAM?IT시스템 중요도와 사용자가 늘어남에 따라 사용자 ID와 계정 및 권한에 관한 관리에 대한 중요성 증가제대로 관리하지 못할 경우 리스크가 큼IAM 에서 통합 관리하는 것이 효율적1. AWS IAM AWS 계정 내에서 “누가(Who)” 리소스에 접근할 수 있고, “무엇을(What)”, “어떤 리소스에(Which Resource)”, “어떤 조건/언제(Under Which Co..
최근 Scouter에서 SQL Time이 10초 이상 찍히는 과부하 쿼리의 성능 개선 작업을 진행했다.이 과정에서 IN 절을 CTE(Common Table Expression)로 변경하여 쿼리 효율을 대폭 향상시킬 수있었다.1. IN 절이 부하를 일으키는 이유: INLIST ITERATOR사내 테이블 구조상 특정 컬럼에 대해 IN 절을 반복적으로 사용할 수밖에 없었다. (해당 value 에 대한 정의 테이블이 존재하지 않고 코드성으로 사용, 인라인 상수 IN 절) 하지만 이 IN 절이 인라인 서브 쿼리로 자주 사용되어 성능 저하가 일어났다.IN 절이 부하를 많이 발생시키는 이유는 바로 INLIST ITERATOR라는 오퍼레이터(Operation) 때문이다.SELECT *FROM employees eWH..
node.js 프로그램 소스를 관리하게 돼서 일단 시작https://nodejs.org/ko Node.js — 어디서든 JavaScript를 실행하세요Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.org일단 설치별다른 설정은 필요 없었고 기본 설정으로 설치 완료. Visual Studio Code에서 실행하기나는 이미 프로젝트가 있었기에 프로젝트가 있는 폴더를 열어주었다.node 버전 확인을 위해 일단 터미널 오픈단축키는 친절하게 알려준다. Ctrl + `node -v최신 lts 버전으로 받아서 현재는 v22.14.0패키지가 있을 경우 패키지 설치를 위해 install 진행 후, 실행npm installnpm..
1.Cache1. Cache 란?캐시는 자주 접근하는 데이터에 더 빠르게 접근할 수 있도록 해 주는 데 특화된 고속 저장소 메커니즘으로, 가져오거나 계산하는 데 비용이 많이 드는 데이터 복사본을 임시로 저장하여 성능을 향상시키기 위해 사용된다.2. Cache 사용 목적캐시의 주요 목적은 데이터에 액세스하는 데 걸리는 시간을 줄이는 것입니다. 자주 사용하는 데이터를 프로세서에 더 가깝게 보관하거나 더 빠르게 액세스할 수 있는 위치에 보관하면 전반적인 시스템 성능이 향상된다.3. Cache의 종류CPU 캐시 : 메인 메모리에서 가장 자주 사용되는 위치의 데이터를 갖고 있는, 크기는 작지만 빠른 메모리디스크 캐시 : 자주 액세스하는 디스크 데이터를 저장하기 위해 운영 체제에서 사용하는 메모리로, 느린 디스크 ..