본문 바로가기

개발9

PRIMARY KEY, 칼럼의 속성일까 테이블의 속성일까? 최근 제가 개발한 DDL-DSL 라이브러리에 ALTER 문 지원을 추가하는 작업을 진행하면서, 어찌보면 당연히 알아야할 지식이지만, 부끄럽게도 PRIMARY KEY 제약조건에 이제야 좀 더 명확히 알게 된 부분이 있어 기록해봅니다.자칫 오해할 수 있는 PRIMARY KEY의 성격대부분 테이블을 생성할 때 다음과 같이 PRIMARY KEY를 지정합니다.CREATE TABLE users ( id INTEGER PRIMARY KEY, name VARCHAR(100), email VARCHAR(200));또는 복합키를 사용할 때는 이렇게 합니다.CREATE TABLE orders ( order_year INT, order_sequence INT, customer_id INT, .. 2025. 1. 17.
[신입 개발자의 첫 번째 아키텍쳐 설계 도전기 - #1] 레거시 아키텍처의 문제점 분석 1. 레거시 아키텍처의 구조와 문제점기존 POS 시스템은 common-core-windows의 3계층 구조로 설계되어 있었습니다.common은 영속성 계층을, core는 비즈니스 로직을, windows는 컨트롤러 역할을 담당했습니다.얼핏 보면 깔끔해 보이는 이 구조에는 몇 가지 문제점들이 있었습니다.1.1 표현력이 너무 부족하다먼저, 오프라인 결제 솔루션은 그 특성상 외부 세계에 대한 의존성을 굉장히 많이 가지는데요.몇 가지 예를 들어 보아도 아래처럼 여러 외부 의존성을 가진다는걸 금새 알 수 있습니다.1. 다양한 VAN사 결제 모듈 연동2. 다양한 상품권사 API 연동3. 배달, 선주문 앱 등의 다양한 주문 채널 연동4. 다양한 기종의 프린터 연동이 외에도 고객사의 멤버십 관리를 해주는 업체와의 연동 .. 2024. 12. 16.
[신입 개발자의 첫 번째 아키텍쳐 설계 도전기 - 프롤로그] 입사 1년차 선물로.. 중요한 자사 프로젝트의 설계를 맡게 되었다!? 예상치 못한 선물2024년 9월, 입사 1년을 갓 넘긴 시점에서 저는 뜻밖의 '선물'을 받았습니다.병역 특례로 복무하던 제 사수분이 퇴사하게 되면서, 사내의 가장 중요한 프로젝트 중 하나인 크로스플랫폼 POS의 아키텍쳐를 설계하고 개발을 리딩해야 하는 상황이 되었기 때문입니다.두려움과 설렘 사이사실, 프로젝트를 리딩해 나가야 되는 상황인 건 맞았지만, 아키텍쳐를 새로 설계해야 된다는 책임이 부여된건 아니었습니다.하지만, 저는 짧다면 짧은 1년간 레거시 코드를 유지보수하고 추가 개발을 하면서, 기존의 아키텍쳐와 개발 방법에 많은 문제가 있다는 것을 느끼고 있었습니다.하여, 어차피 할 거라면 신규 프로젝트니까 아키텍쳐 부터 탄탄하고 깔끔하게 만들고 가자는 생각이 들었습니다.위와 같은 상황이었기에 처음에는 정.. 2024. 12. 16.
[신입 개발자의 '0' 번째 라이브러리] Dialect와 Adapter 패턴의 활용 - EPSON 써멀 프린터 라이브러리 제작기(1) 들어가며여태까지 제가 만들었던 세 가지 라이브러리 제작기를 다루었는데, 생각해보니 너무 옛날이라 깜빡 잊고 있던 라이브러리가 있더라구요 ㅎㅎ;바로 입사 2개월 차였던 2023년 11월, 주방 주문서 출력을 위한 EPSON 써멀 프린터 라이브러리 입니다.이 라이브러리의 주요 과제는 다음과 같았습니다:Epson 프린터의 명령어 셋(Command Set)을 체계적으로 관리네트워크 소켓, 시리얼 연결, 안드로이드용 Epson SDK 등 다양한 연결 방식 지원확장 가능하고 유지보수가 용이한 구조 설계사실, 처음에는 네트워크 연결만 구현하면 되는, 나름대로 단순한(?) 요구사항이었습니다.하지만 저는 조금 다르게 생각했습니다. 프린터와의 통신은 결국 동일한 명령어 셋을 전달하는 것이고, 단지 전달 방식만 다를 뿐이었.. 2024. 12. 15.
728x90