| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 오블완
- AWS
- 캡슐화
- 감상문
- go-sql-driver
- javascript
- typescript
- goland
- 구조체
- Custom Dialect
- 디자인패턴
- RDS
- AI
- GoF
- golang
- 티스토리챌린지
- database/sql
- elasticsearch
- MSA
- 보안
- GIT
- blank import
- 통합 로깅 시스템
- Infra
- logging
- Thymeleaf Expression Object
- go
- esbuild
- Intellij
- Kubernetes
- Today
- Total
Fall in IT.
삶이라는 시스템의 장애와 회복탄력성에 관하여『노르웨이의 숲』을 덮고 난 뒤, 한동안 머릿속이 어지러웠다. 이 소설은 삶에 대한 명쾌한 해답을 제시하지 않는다. 그저 해답이 부재한 상태로 삶을 지속해야만 하는 인간의 면면을 집요하게 비출 뿐이다. 처음에는 그 불투명함이 못내 불편했으나, 내가 지나온 시간들을 겹쳐보니 이 소설이 관통하는 핵심은 의외로 명확하게 다가왔다.인간에게 가장 중요한 능력은 '결코 무너지지 않는 강인함'이 아니라, '무너진 뒤에 다시 제자리로 돌아올 수 있는 회복력'이다. 결함은 상수가 아닌 전제이다10년 차 개발자로 일하며 깨달은 사실이 있다. 세상에 완벽한 시스템은 없으며, 장애는 반드시 발생한다는 점이다. 예상치 못한 입력이 쏟아지고, 신뢰했던 외부 API가 응답하지 않으며, 견..
Thymeleaf를 사용하다 보면 Controller가 Model에 직접 담아주지 않은 데이터나, 공통적으로 사용하는 유틸리티 함수(날짜 포맷팅, 금액 변환 등)를 템플릿 어디에서나 자유롭게 호출하고 싶은 경우가 생깁니다.단순히 데이터를 화면에 출력하는 것을 넘어, 템플릿의 가독성을 높이고 유지보수를 효율적으로 만들어주는 전역 유틸리티 활용법 3가지를 정리합니다.1. Thymeleaf Expression Object (Custom Dialect)Thymeleaf의 철학에 가장 부합하는 정석적인 방법입니다. 사용자가 직접 정의한 객체를 {#객체명} 형태로 사용할 수 있도록 등록하는 방식입니다.구현 단계유틸리티 서비스 작성: 실제 로직을 담당할 컴포넌트를 작성합니다.Dialect 및 Factory 구현: T..
서비스 보안을 강화하기 위해 가장 보편적으로 사용되는 방법은 2FA(2-Factor Authentication, 2단계 인증)입니다.오늘은 2FA의 핵심 기술 중 하나인 TOTP 방식의 OTP 인증 아키텍처와 그 작동 원리에 대해 정리해 보겠습니다. 1. 2FA(2단계 인증)란 무엇인가?2FA는 사용자가 로그인을 시도할 때, 서로 다른 두 가지 방식의 인증 요소를 결합하여 본인임을 확인하는 절차입니다.1차 인증: 지식 기반 요소 (ID/Password)2차 인증: 소유 기반 요소 (OTP 코드, 하드웨어 토큰) 또는 생체 기반 요소 (지문, FaceID 등)아이디와 비밀번호가 유출되더라도, 사용자가 물리적으로 소유한 기기(스마트폰 등)가 없다면 계정에 접근할 수 없도록 설계하는 것이 핵심입니다. 2. O..
개발 과정에서 '스택 오버플로우'나 '메모리 누수'와 같은 용어를 빈번하게 접하게 된다. 프로그램이 실행될 때 코드, 변수, 함수 등이 저장되는 메모리 공간의 구조를 이해하는 것은 중요하다.본 글은 프로그램 실행 시 사용되는 메모리 공간의 구조를 분석하고, 개발자가 이를 이해해야 하는 이유를 예제 코드와 함께 기술한다.1. 코드(Code) 영역코드 영역은 작성된 소스 코드가 컴파일된 기계어(Machine Code)가 저장되는 공간이다. 이 영역은 프로그램 시작 시 메모리에 로드되어 프로그램이 종료될 때까지 유지된다.특징: 실행 중 코드 변경을 방지하여 프로그램의 안정성을 확보하기 위해 읽기 전용(Read-Only)으로 설정되는 경우가 많다. CPU는 이 영역의 명령어를 순차적으로 읽어 실행한다.메모리 크..
전통적인 모놀리식(Monolithic) 아키텍처에서 마이크로소프트 아키텍처(MSA)로의 전환은 이제 거스를 수 없는 흐름이 되었다. MSA는 서비스의 독립적인 개발과 배포를 가능하게 하여 조직의 생산성을 극대화하는 강력한 장점을 가지고 있다. 하지만 서비스가 잘게 쪼개지고, 하나의 요청이 여러 서비스 간의 복잡한 네트워크 호출로 이어지면서 새로운 문제가 발생했다. 바로 시스템의 동작을 이해하고 추적하기가 극도로 어려워졌다는 점이다.과거 모놀리식 환경에서는 CPU, Memory 사용률과 같은 시스템 매트릭과 로그 파일만 잘 확인해도 장애의 원인을 비교적 쉽게 파악할 수 있었다. 그러나 MSA 환경에서는 문제가 발생했을 때, 수많은 서비스 중 어느 곳에서 문제가 시작되었고, 그 여파가 어디까지 미쳤는지 파악..