전체 글

개발이 즐거운 개발자 석이입니다~
메모 & 삽질기록보관소

[자바] 자바 데이터 마이그레이션 툴 개발기

2년차 백엔드 개발자로 스타트업에서 일하고 있던 중, 이기종 DB간의 데이터를 동기화하는 모듈 개발을 진행하게 되었다. 예를 들면 Mysql의 특정 테이블에서 Postgresql의 특정 테이블로 데이터를 동기화 하는 것. 프로젝트는 내 주언어인 자바로 진행하게 되었고, 프로젝트에 대한 아키텍처가 전혀 없는 정말 맨바닥 단계부터 진행하게 되어 초반부터 많은 고민들과 삽질 을 하게 되었다. 이 글은, 프로젝트를 진행하면서 했던 기술적인 고민들을 기록하기 위한 글이다. (회사와 관련된 민감한 정보들은 최대한 누락하고 작성할 예정... 이지만 차후 문제가 생길 경우 글이 내려갈 수 있다...) 프로젝트 첫 날 ~ 샛째 날 프로젝트 요구사항을 분석했다. 요구사항의 개략적인 맥락은 크게 세 단계로 보였다. 1. 소..

메모 & 삽질기록보관소

[자바] MXBean already registered 에러 핸들링

발단 회사에서 커넥션 풀 시스템을 개발하고 있었는데, 개발을 마친 시스템이 동작하지 않았다. 어제 퇴근할 때쯤 개발이 끝나서 스프링부트 프로젝트에 올려 모든 과정이 정상적으로 동작하는 걸 확인했는데 오늘 아침에 출근을 해보니 스프링 프로젝트가 구동되지를 않는다. 에러로그를 쫓아보니 어제 내가 개발한 풀 시스템 쪽에서 에러가 나는건 확실한데... 왜 에러가 나는지 도저히 감이 잡히지 않는다. 아니 어제 정상적으로 동작하는 거 확인 했었단 말이야! 상황 개략적인 상황은 다음과 같았다. 스프링부트로 구동 중인 프로젝트가 하나 있고, 풀링 시스템이 동작하는 라이브러리가 하나 있다. 풀링 시스템 라이브러리는 내가 만든 라이브러리였고, GenericObjectPool이라고 하는 아파치의 JDBC 관련 풀 객체를 ..

메모 & 삽질기록보관소

MQTT 공부 중 참고할만한 문헌 모아두기

MQTT 설계 아키텍처 관련 https://www.joinc.co.kr/w/man/12/MQTT/MultiChat MQTT를 이용한 Push 서비스 개발 MQTT를 이용한 Push 서비스 개발에서 MQTT 설치와 함께, 간단한 채팅 애플리케이션을 만들었다. 한발 더 나아가 MQTT기반의 푸쉬(push) 서비스를 기획해 보려한다. 개발이 아니고 기획이라고 하는 이유 www.joinc.co.kr Facebook 메신에서 사용하는 MQTT https://d2.naver.com/helloworld/1846 MQTT 브로커 모스키토 관련 자료 https://mosquitto.org/ Eclipse Mosquitto Eclipse Mosquitto is an open source (EPL/EDL licensed) ..

네트워크

[외워서 끝내는 네트워크 핵심이론 - 응용] VPN, IPSec, VPN 악용

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 응용'의 section 3을 보고 공부한 내용을 정리한 글입니다. VPN이란? VPN은 Virtual Private Network의 약자로 한국어로 번역하면 가상 사설망을 의미한다. 여기에서 '가상'이라는 의미는 물리적으로 구현되지 않고 논리적으로 구현된 무언가를 의미하고 '사설망'은 외부에서 접근이 불가능한 사적인 네트워크를 의미한다. 의미를 풀어서 설명하면 외부에서 접근이 차단된 사적인 네트워크를 물리적인 장치를 통해서가 아닌 네트워크 기술을 통해서 구현한 것이라고 설명할 수 있을 것 같다. 사실 VPN은 지역 네트워크인 LAN과 상당히 유사하다. LAN 또한 공적인 네트워크인 인터넷과 구별되는 사적인 네트워..

암호학

[외워서 끝내는 SSL과 최소한의 암호기술] SSL 인증서와 터널링

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 SSL과 최소한의 암호기술'의 section 1과 section 2를 보고 공부한 내용을 정리한 글입니다. 대칭키는 인터넷 환경에서 심각한 문제를 가지고 있다 인터넷 환경에서 대칭키를 사용하기 위해서는 통신을 진행하고자 하는 두개 이상의 호스트가 자신들이 암호화 해서 주고 받는 암호문을 생성/해석하기 위해 서로 같은 대칭키를 각자가 보유할 필요가 있다. 대칭키는 암호화와 복호화가 모두 하나의 키로 수행되는 키 형태이기 때문에 가령 내 호스트에서 A라는 대칭키로 암호문을 만들어 상대방에서 송신을 한다면, 해당 암호문을 수신받은 수신 호스트는 암호문을 해석하기 위해 A라는 대칭키를 가지고 있어야만 한다는 이야기이다. 그런데 여기에 심각한..

암호학

[외워서 끝내는 SSL과 최소한의 암호기술] 체크섬, Hash, 대칭키, 비대칭키, 디지털 서명

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 SSL과 최소한의 암호기술'의 section 1과 section 2를 보고 공부한 내용을 정리한 글입니다. 체크섬(Checksum) 네트워크를 통해 전달된 값이 해커의 조작이나 네트워크 상에서의 유실 등을 이유로 변경되었는지 검사하는 값. 한국어로 표현하면 '검사합'이라고 한다. 형식이 단순해 데이터의 무결성을 검증하는 값으로만 기능할 뿐 보안성을 보장할 수는 없다. 메커니즘은 송신측에서 데이터를 보낼 때 체크섬을 함께 보내는데, 수신지에서 수신한 데이터를 근거로 송신자의 체크섬과 연산을 해, 송신측에서 연산한 값과 일치한지를 확인하는 것이다. 아주 단순화한 방법으로 송신지에서 전송한 데이터가 십진수 7이고 체크섬이 1인 환경에서 체..

네트워크

[외워서 끝내는 네트워크 핵심이론 - 응용] NAT 기반의 인터넷 공유기, 포트포워딩

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 응용'의 section 1을 보고 공부한 내용을 정리한 글입니다. 인터넷 공유기 인터넷 공유기 또는 간단히 공유기(共有器)는 가정이나 소기업 등에서 사용하는 소용량의 라우터를 가리키는 말이다. 기술적으로는 홈 라우터(Home Router)라고 한다. 오늘날의 인터넷 공유기는 무선 통신 시대에 걸맞게 Wi-Fi 칩셋과 안테나를 갖추고 무선 단말(access point) 기능을 지원하는 경우가 대부분이며, 스마트폰이 대중화되면서 가정마다 하나씩은 설치하는 필수적인 네트워크 장비가 되었다. - 인터넷 공유기, 나무위키 오늘날의 인터넷 공유기는 일반적으로 NAT(Network Address Translation) 기술이..

네트워크

[외워서 끝내는 네트워크 핵심이론 - 응용] Inline, Out of Path, Proxy 구조

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 응용'의 section 0을 보고 공부한 내용을 정리한 글입니다. 세가지 네트워크 장치 구조 - Inline, Out of Path, Proxy Inline 구조 packet으로 무언가를 하는 구조 패킷을 통과(Bypass) 시키거나 차단(Drop)하는 구조 필터링하는 것 Out of Path 구조 packet으로 무언가를 하는 구조 Inline 구조와는 달리 패킷을 통과/차단 시키지 않고 감지만 함 패킷을 분석하거나 기록하기 위해 사용되며 패킷에는 영향을 주지 않음 센서와 유사한 느낌 Proxy 구조 Socket 수준의 stream 데이터를 가지고 무언가를 하는 구조 소켓 수준의 Inline 구조라고 봐도 무방..

네트워크

[외워서 끝내는 네트워크 핵심이론 - 기초] L4 수준에서 외울 것들 정리

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 기초'의 section4를 보고 공부한 내용을 정리한 글입니다. TCP와 UDP TCP와 UDP는 L4 계층을 대표하는 프로토콜. TCP가 가장 중요하지만 미래에 광범위하게 사용될 것으로 보이는 HTTP3의 경우 UDP를 사용하는 것으로 알려져 UDP가 미래에는 TCP만큼 주목 받을 것으로 보임. TCP는 UDP보다 무거우며, TCP는 연결지향, UDP는 연결을 지향하지 않음이 가장 두드러지는 차이점이다. UDP가 미래에 각광 받으리라 판단하는 이유는 전송되는 데이터의 크기와 수가 급수적으로 증가하기 때문. TCP TCP는 연결(Connection, Session)이라는 개념을 가짐. TCP의 연결은 결과적으로 ..

네트워크

[외워서 끝내는 네트워크 핵심이론 - 기초] L3 수준에서 외울 것들 정리

들어가기 앞서 해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 기초'의 section3를 보고 공부한 내용을 정리한 글입니다. IPv4 주소 IP 주소는 IPv4와 IPv6로 나눌 수 있다. IPv4는 보다 고전적인 형식의 IP 주소, IPv6는 IPv4를 보완하기 위해 나온 새로운 IP 주소이다. IPv6가 세상에 나온 계기는 전세계 상의 호스트(네트워크를 이용하는 컴퓨터)의 수가 IPv4가 감당할 수 있는 범위보다 많아졌기 때문이다. 해당 글에서는 IPv6에 대해서는 별도로 언급하지 않고 IPv4에 대해서만 살펴보도록 하겠다. IPv4는 32bit 주소 체계를 사용하며 주로 8bit를 4개로 나누어 가운데 점(.)을 두어 각각의 8bit를 구분한다. 8bit는 비트 값으..

석이
기록으로 채워가는 개발자 이야기