Exception Handler란?프로그램 실행 중 예기치 못한 상황에 예외가 발생한다.이때, 발생한 예외를 가로채어 개발자가 원하는 방식으로 응답을 반환하도록 하게 도와주는 어노테이션이다. 왜 이런 기능이 필요한가? Case 1 )클라이언트가 요청 파라미터를 실수하여 서버 측에서 IllegalArgumentException이 발생잘못된 입력이 원인임에도 불구하고 서버 내부에서 발생한 예외이기 때문에 500 예외가 전달된다.일부 예외는 HTTP 상태코드로 변환해주기는 하지만 그 외 예외는 500으로 전달되고, 이를 미리 지정한 다른 상태코드로 변환하여 유연한 대처를 하고자 하는 필요성을 느낄 수 있다.Case 2 )회원을 처리하는 컨트롤러에서 발생하는 RuntimeException과 상품을 처리하는 R..
이제 Pinpoint 를 구축했으니 실제로 모니터링을 진행해보겠습니다. 현재 서버 구조부터 둘러보고, 하나의 요청을 예시로 해서 실제 트랜잭션 과정을 추적해보겠습니다.현재 서버 구조현재 운영하고 있는 서비스 Mongs(몽스) 앱 서비스의 백앤드 서버 구조입니다.크게 Discovery Applications(공통 서비스 및 게이트웨이), Mongs Applications(몽스 서비스)로 나누어져 있습니다.Gateway로 들어온 요청을 User 서비스로 전달하고 로직을 수행한 후, 응답을 보내는 전체적인 과정을 추적해보겠습니다.운영 서버에서 바로 진행하면 실 서비스에 영향이 갈수도 있어, 운영 반영 전 테스트하는 스테이징 서버에서 진행했습니다.Pinpoint Web UI 접속Pinpoint Web UI의 기..
ABAP(Advanced Business Application Programming)은 SAP 시스템을 위해 만들어진 전용 프로그래밍 언어입니다.기업의 ERP 환경에서 맞춤형 보고서, 화면, 인터페이스 등을 개발하는 데 사용됩니다. 다른 범용 언어와 달리 비즈니스 로직과 데이터 처리에 특화되어 있어, SAP가 단순한 패키지 소프트웨어를 넘어 각 기업의 운영 방식에 유연하게 적응할 수 있도록 돕습니다.그러면 이러한 ABAP은 왜 등장하게 되었을까요? 이를 알기 위해선 SAP의 역사에 대해 먼저 알아봐야 합니다. SAP의 배경1970년대 초반까지 각 기업들은 각각의 부서별로 시스템을 따로 운영했기 때문에, 데이터 관리에 큰 어려움을 겪고 있었습니다.이러한 문제를 해결하기 위해 1972년, 독일 만하임에서 I..
a = 10 위의 코드를 통해 생성 - 연결이라는 두 가지 동작이 진행됩니다.10 이라는 값이 객체로써 메모리에 생성됩니다.a 라는 변수에 10 값이 있는 메모리 주소에 대한 참조를 할당합니다.사실 엄밀히 말하면 -5~256까지의 숫자는 파이썬의 기본 메모리에 캐싱된 객체라, 조금 이야기가 다르지만, 넘어가도록 하겠습니다!a = 10a = 20 위의 코드에서는 “a” 에 10을 할당한 후, 다시 20이란 값을 새롭게 할당합니다.10 값이 메모리에 생성됩니다.a 변수에 10의 메모리 주소 참조를 할당합니다.20 값이 메모리에 생성됩니다.a 는 10에 대한 메모리 주소 참조를 해제하고, 새롭게 20에 대한 메모리 주소 참조를 할당합니다.10 은 사용되는 곳이 없으므로 (참조가 모두 해제되었으므로) 가비지 컬..
마이크로서비스 아키텍처(MSA)나 대규모 분산 환경에서는 요청 하나가 여러 서비스와 DB, 외부 API를 거쳐 최종 응답으로 이어집니다. 단순 로그만으로는 “어디서 지연이 발생했는지”, “어떤 서비스가 병목인지”를 파악하기가 어렵습니다.이 문제를 해결하기 위해 등장한 오픈소스 APM 도구가 바로 Pinpoint입니다.Pinpoint란?Pinpoint는 네이버에서 공개한 대규모 분산 시스템을 위한 오픈소스 APM(Application Performance Management)입니다.에이전트(Agent)를 애플리케이션에 붙이면, 요청 흐름을 자동으로 수집하여 서버 간 호출 관계를 시각화하고, 지연 구간을 한눈에 파악할 수 있게 해줍니다.주요 특징분산 트랜잭션 추적: 요청이 서비스 간 어떻게 이동하는지 시각적..
현대 컴퓨터 시스템의 성능을 좌우하는 핵심 요소 중 하나가 바로 캐시 메모리 입니다.CPU 연산 속도는 빨리지고 있지만, 메모리의 속도는 상대적으로 느려 병목이 발생합니다.이 병목을 줄이기 위해 도입된 것이 캐시 메모리입니다.이 글에서는 캐시 메모리가 왜 필요한지, 어떻게 동작하는지, 그리고 현대 시스템에서 어떤 구조로 구현되는지를 살펴보겠습니다.왜 캐시가 필요한가?cpu는 매우 빠르게 연산할 수 있지만, 연산에 필요한 데이터를 RAM에서 매번 가져온다면, 메모리의 상대적으로 느린 속도 때문에 CPU는 대기해야 합니다. 이러한 속도 차이(latency gap)를 해소하기 위한 해결책이 바로 캐시입니다.캐시의 계층 구조대부분의 현대 cpu는 다단계 캐시 구조를 사용합니다.종류위치특징L1CPU 코어 내부명령..
URL을 삽입하면 자동으로 예쁜 미리보기를 만들어주는 서비스들이 있습니다.대부분의 서비스에서 이미 지원하고 있는 기능입니다. 노션, 카카오톡, 페이스북, 트위터(X), 그리고 지금 글을 쓰고 있는 티스토리 마저도 URL을 삽입하면 미리보기가 자동으로 생성 되는 경우가 있습니다. The transition from Python to C is brutal : r/ProgrammerHumor Reddit의 ProgrammerHumor 커뮤니티: The transition from Python to C is brutalProgrammerHumor 커뮤니티에서 이 게시물을 비롯한 다양한 콘텐츠를 살펴보세요www.reddit.com 바로 위에 있는 이런 것들 말입니다! 정식 명칭은 Open Graph Preview..
- Total
- Today
- Yesterday
- OOP
- naver
- Hbase
- docker-compose
- 변수
- 분산트랜잭션
- 트랜잭션
- sql
- transaction
- Programming
- python
- 분산환경
- pinpoint
- Monitoring
- Docker
- MSA
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |