전체 글 96

이너서클 재직자과정 후기

이너서클 전 고민이너서클에 합류하기 전 당시 나는 혼자서 학습은 꾸준히 했지만 성장에 대한 고민이 많았었다.제대로 학습하고 있는가?잘못된 방향으로 하고 있는건 아닌가?이직 준비는 제대로 하고 있는가?무엇부터 준비해야 하는가?내게 필요한게 무엇인가?지금 하는 일과 회사가 내가 성장할 수 있는 환경인가?지금 생각해보면 정말 고민만 하루종일 했던것 같고, 성장에 목말라 있었다고 생각한다. 그러던 내가 이너서클을 알게된건 진태양님을 통해서였다. 이너서클이라는 경력자들을 대상으로 프로젝트와 커뮤니티를 아우르는 진짜 서클을 만들어보고자 하는 비전을 소개해주셨고, 내가 참여하면 정말 잘 할 자신이 있었다. 그리고 정말 간절했다.하지만 이너서클은 원한다고 모두 참여할 수 있는 게 아니었고, 신청할 때 요구된 사전질문 ..

Living 2025.01.17

외부 결제 API에서 문제가 생겼을 때 에러 핸들링은 어떻게 할까?

문제 정의외부 결제 대행 서비스(PG)를 하는 업체에 API를 사용해 결제를 진행하는 로직이 있다고 가정하겠습니다. 해당 PG사에 요청을 보냈는데 커넥션, timeout 혹은 이 외의 예외가 발생해 이에 대한 에러 핸들링이 필요한 상황이라고 가정할 때 어떻게 해야 우아하게 외부 API에 대한 처리를 할 수 있을까요? 가설 1 : 외부 API 에 커넥션 문제가 발생했을 때API 서버의 상황을 알 수 없지만, 연결 자체에 문제가 생겼을 경우, 결제 처리 자체가 시도하지 못했으므로, 중복결제가 발생할 확률은 없다고 가정할 수 있습니다. 이런 경우 재시도 로직을 생각해봐야합니다. 먼저 재시도 로직 처리를 위해 각각 거래에 대한 유니크 ID값과 함께 거래 상태를 데이터베이스등에 저장합니다. 그리고 배치와 스케줄러..

Programming 2024.08.12

DNS 와 DNS Cache 에 대해 알아보자

개요 최근 회사에서 내부망과 외부망으로 분리하는 작업을 진행하면서 DNS Cache 때문에 내부망에서 HTTP 요청이 정상적으로 동작하지 않던 이슈가 있었다. 이를 해결하기 위해 서버 전용LAN선을 재연결하거나, 컴퓨터를 재시동하거나, 네트워크를 지웠다 다시 설치하는 등 여러 시도를 했지만 결국 해결한 방법은 DNS Cache를 초기화함으로써 해결할 수 있었고, 오늘 경험했던 DNS Cache가 뭔지 제대로 알기 위해 정리하기로 했다. DNS ? 먼저 DNS(Domain Name System) 으로 명칭에서도 직관적으로 알 수 있듯 사람이 읽을 수 있는 도메인 이름을 IP주소로 변환하는 시스템을 의미하며 보통 www.example.com 이라는 도메인 이름을 ex) 192.168.1.1 처럼 바꿔주는 기..

Programming 2023.10.12

Redis Study - 레디스의 정보 처리

Redis의 특징 Key & Value 데이터베이스로 분류되는 NoSQL이며, 2009년 개발되어 2015년에 상용SW로 개발 키밸류 DB이면서 대표적인 In-Memory 데이터 처리 및 저장기술을 제공하기 때문에 상대적으로 빠른 Read/Write 가능 String, Set, Sorted Set, Hash, List, HyperLogLogs 등 유형의 데이터 저장 가능 Dump 파일과 AOF(Append Of File) 방식으로 메모리 상의 데이터를 디스크에 저장할 수 있습니다. Master & Slave Replication 기능을 통해 데이터의 분산, 복제 기능을 제공하며 Query Off Loading 기능을 통해 Master는 Read/Write 를 수행하고 Slave는 Read 만 수행할 수 ..

Study/Redis 2023.08.19

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 1. 사용자 수에 따른 규모 확장성

단일 서버 사용자는 도메인으로 웹사이트에 접속한다. 이 때 DNS에 질의 한다. DNS 조회 결과로 IP 주소가 반환된다. 해당 IP주소로 HTTP 요청이 전달된다. 요청을 받은 웹 서버에서 HTML, JSON형태의 응답등을 반환한다. 데이터베이스 사용자가 늘면 서버를 여러개 두어야 한다. 하나는 요청 트래픽 처리용, 하나는 데이터베이스용이다. 각각을 분리하면 독립적으로 확장해 나갈 수 있다. 데이터베이스는 용도에 따라 선택해야 한다. 다음과 같은 경우 NoSQL 을 고려하자 아주 낮은 응답 지연시간(latency) 요구 데이터가 비정형(unstructured) 인 경우 데이터(JSON, YAML, XML등)를 직렬화(serialize) 하거나 역직렬화(deserialize) 할 수 있기만 하면 됨 아주..

주니어 개발자를 위한 TPO for TDD 세미나 후기

개요 TPO for TDD 세미나를 듣고와서 내용을 정리하고, 느낀점을 포스팅해봤습니다. 여기서 TPO란 Time(시간), Place(장소), Occasion(상황)에 따른 TDD 적용 이라는 의미 같습니다. 전체적인 맥락에서 강사님이 말씀하시는 TDD 가 유연하게 필요에 따라 적용되어야 한다는 점과 특히 강조하시는 테스트의 중요성에 대해서 인상깊게 들었습니다. 개발 방법론의 진화 테스트 주도 개발(이하 TDD)이라는 방법론이 나오기 이전에 개발 방법론은 필요에 따라 진화해 왔다고 한다. 대략적인 진화도를 보자면, 구조적 → 정보공학 → 객체지향 → CBD → Agile 방법론과 더불어 프로그램을 다룰 수 있는 운영체제와 환경도 진화해 왔다. 단일 OS → 하이퍼바이저(가상 OS) → 컨테이너 → 오케스..

Living 2023.08.18

Redis Study - 레디스란

Redis 스터디 NoSQL & Redis | 주종면 - 교보문고 NoSQL & Redis | ㆍ 도서 특징 ⑴ Redis의 주요 구조와 기술들을 도형 그림을 통해 체계적인 설명과 원리 위주로 학습합니다. ⑵ 각 장에서 소개하는 기술들에 대해 실습이 가능하도록 구성되어 있습 product.kyobobook.co.kr 해당 책을 바탕으로 매주 1챕터씩 진행하는 스터디를 하기로 했습니다. Redis를 위 책과 함께 공식 문서를 바탕으로 공부하면서 정리한 내용을 포스팅 하겠습니다. NoSQL Key - Value : 간단한 키와 연결된 값을 저장하는 방식으로 빠른 읽기와 쓰기, 높은 확장성Amazon DynamoDB : AWS에서 제공하는 키 - 밸류 저장소, 자동 확장 기능을 제공하여 대규모 처리가능, 빠른..

Study/Redis 2023.07.29

Real MySQL - 엔진 2

메모리 할당 및 사용 구조 MySQL 메모리 사용 및 할당 구조 MySQL 에서 메모리는 크게 두가지로 구분된다. 글로벌 메모리 영역과 로컬 메모리 영역으로 구분되며 글로벌 메모리 영역의 모든 메모리는 MySQL서버가 시작되면서 운영체제로부터 할당된다. 글로벌 메모리 영역 일반적으로 하나의 메모리 공간만 할당되며 필요에 따라 2개 이상의 메모리 공간이 할당받을 수 있지만 클라이언트의 수와 무관하며 생성된 글로벌 영역은 모든 스레드에 의해 공유된다. 글로벌 메모리 영역에 종류는 테이블 캐시 InnoDB 버퍼 풀 InnoDB 어댑티브 해시 인덱스 InnoDB 리두 로그 버퍼 로컬 메모리 영역 세션 메모리 영역이라고도 표현하며 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 영역이다. 클라이언트 커넥션..

인프런 - 인프콘 다시 노려보기

안녕하세요 이번 인프콘2023은 꼭 가고싶어서 진짜 진짜 가고싶다고 빌었는데,, 결국 추첨에 떨어졌습니다.. 작년에 이어 두 번째 탈락.. 면접,서류 탈락보다 더 상실감이 크네요.. 근데 인프랩에서 이번에 SNS에 올리면 추첨을 통해 다시 한번 기회를 줄 지도?! 몰라서 이렇게 글을 써 봅니다. 이벤트 내용은 이러합니다. 인프콘행사 시간표 를 보고 내가 원하는 세션을 담아 나만의 시간표를 만들면 됩니다. 그리고 이 시간표를 공유하면 25명을 다시 추첨한다고 해요... 잔인한 인프랩... 이번에라도 됐으면 좋겠습니다!

Programming 2023.07.19