·회고
인턴의 시작지난 23년 겨울, 나는 실험실 자동화 도메인을 다루는 스타트업의 채용연계형 인턴으로 입사를 했다. 그리고 24년 2월 26일, 나는 퇴사를 하게 되었다. 첫 스타트업에 대한 도전의 시간동안, 정말 많은 일들이 일어났었다. 도전적인 일, 새로운 경험을 해볼 수 있는 일, 불합리한 일 등 좋고 힘든 일이 (정말) 많았다. 하지만 결과적으로는 정말 재밌었다.(무진장 힘들었지만..)비록 이번에는 아쉽게 됬지만, 또 도전해보고 싶다. 그래서 그런지 글을 작성하는 이 시점에는 아쉬움의 감정이 정말 많이든다. 지인이 보내준 유튜브 영상은, 이 기업에 대한 엄청난 관심을 갖게 만들었다. 특히, 대표의 분명한 목표와 실행력, 이것만으로도 나는 정말 이곳에서 일해보고 싶었다. 그리고 관련된 모든 자료를 찾아보..
·개인공부
Pydantic을 사용한 직렬화와 역직렬화  직렬화는 객체 데이터를 통신하기 쉬운 포맷(Byte, CSV, JSON 등) 형태로 만들어주는 작업을 말하며,  역직렬화는 반대로 포맷(Byte, CSV, JSON 등)형태에서 객체로 변환하는 과정을 말한다. 직렬화: 객체들의 데이터를 전송할 수 있도록 특정 포맷 상태로 변환하는 것역직렬화: 직렬화된 데이터를 다시 객체 형태로 만드는 것 위키백과에서 말하는 직렬화직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다.[1..
·개인공부
들어가기 전 Pydantic은 Python 영역에서 사용하는 타입 힌트와 데이터 검증을 보다 쉽고 명확하게 해주는 라이브러리이다. 누군가는 이러한 "타입을 강제하는 Pydantic이 Python을 Python스럽지 못하게 사용하는 것"이라 이야기하기도한다. 하지만 타입을 강제하는 것은 Python의 철학와는 별개로 서비스 운영측면에서 중요한 요소이다.타입힌팅은 코드의 명확성을 높여주며, 개발자의 개발 생산성과 밀접한 연관이 있는 IDE의 자동완성 기능와 결합되어 높은 개발 생산성을 이끌어 낼 수 있다.데이터 구조가 명확해짐으로써 다른 서비스팀와의 협업과 유지보수가 더욱 더 편리해진다. Pydantic은 타입을 강제하는 것 뿐만아니라, 커스텀 유효성 검사와 데이터 직렬화(serialization) 및 역직..
·아키텍처
파이프-필터 아키텍처(Pipes and Filters Architecture) 파이프-필터 아키텍처는 일련의 파이프를 따라 흐르며 여러 단계의 필터를 통과해 원하는 환경에 도달하는 데이터로 묘사할 수 있다. 파이프 는 필터를 연결하며, 일반적으로 분산 대기열이나 메시지 브로커에 해당한다. 필터는 각 단계에서 데이터를 처리하는 고립된 소프트웨어 컴포넌트 에 해당하며, 수신 데이터에 대해 하나의 작업만을 수행하고, 나머지 파이프라인과 무관하게 동작한다. 데이터 소스: 데이터의 출처를 말한다. 사용자로부터 네트워크 요청을 수신하는 백엔드 서비스가 될 수도 있다. 센서 또는 종단 장치에서 데이터 샘플을 수신하는 서비스형 함수 요소 같은 경량 서비스가 될 수 있다. 데이터 싱크: 모든 처리 단계(필터)를 통과한 ..
·아키텍처
포스팅에서의 클린아키텍처는 Ports and Adapters 아키텍처, 헥사고날 아키텍처(육각형 아키텍처) 모두 같은 것을 의미한다. 이번 포스팅에서는 지난 포스팅에서이야기한 클린 아키텍처(Ports and Adapter) 의 구성과 이를 반영한 프로젝트의 패키지 구조에 대해 이야기를 해보려고한다. 참고 포스팅 [아키텍처] 클린아키텍처(Ports and Adapters): 왜 클린 아키텍처를 공부하게 되었는가? 왜 클린 아키텍처를 공부하게 되었는가? 나는 모놀리식 아키텍처, 계층형 아키텍처(MVC) 기반의 개인 프로젝트와 짧지만, 레거시 프로젝트를 담당해 개발한 경험이 있다. 그리고 프로젝트를 개발 sykeem.tistory.com 클린아키텍처에서 가장 중요한 것은 의존성 규칙이다. 모든 계층 간 의존성..

·트러블슈팅
최근 나는 사이드 프로젝트를 진행하고 있다. 그리고 사이드 프로젝트의 목표는 내가 공부한 내용을 적용 및 개선하는 것을 가장 큰 목적을 두고 진행하고 있다.  개발 초기 비용을 줄이는 것을 목표로 하여, 개발 환경 및 컨벤션을 통일한다.코드 작성에 있어, 테스트 코드를 작성하고, 예측 가능한 코드를 작성한다.첫번째 목표와 관련하여, 나는 개발 환경을 컨테이너 환경으로 구축했다. 개발 환경과 프로덕션 환경을 동일하게 하고, 다른 서비스와의 통신의 모의적으로 하기 위해서 컨테이너 환경으로 개발 환경을 구축했다. 그리고 컨테이너와 로컬 코드 베이스를 Docker Volume 으로 묶어 개발 과정에서의 코드 변경사항을 실시간으로 반영하였다. 그리고 나는 오늘 Docker Volume 과 관련한 문제를 겪었다. ..
·개인공부
나는 작년, 사내에서 사용하는 IDE를 PyCham에서 VSCode(이후 현재 Cursor)으로 옮겨가면서, 굉장한 어려움(?)을 겪었었다. 사실 IDE를 옮길 일이 많지 않다. 하지만 나는 사내에서는 VSCode(Cursor)로 개발을 진행하고, 집에서 진행하는 개인 프로젝트 및 개발 공부는 JetBrains 의 IDE을 사용하는 멀티 IDE(?)를 사용하곤 했다. 두개의 IDE를 사용하면서 나는 굉장한 생산성 저하가 발생했다. 단축키가 헷갈리면서 그 어느곳에서도 득을 보지 못했다. 집에서는 Cursor의 단축키를 입력하고, 회사에서는 JetBrains의 단축키를 입력하고... 그러다가 결국 나는 단축키를 사용하지 않는 지경에 도달했었다. 단축키를 사용하지 않는다는 것은, 사용하기 이전에는 할 수 있지..
·회고
글을 작성하면서..  오늘은 다시는 돌아오지 않을 24년의 마지막 날이다. 지난 24년의 개인적인 부분과 업무적인 부분에 대한 회고를 작성하였으나, 생각보다 많은(?)양에 요약이 필요하다는 생각을 하게 되어 "24년을 지나며, N개의 깨달음" 이라는 글을 통해 나를 다시한번 정리해보고자 한다.그리고 이 글은 주기적으로 나 스스로 앞으로 반복하여 볼 생각이다. 그래서 이 글의 독자는 미래의 나 가 핵심으로 생각하며 작성한다. 과거부터 지금까지 나는 회고를 좋아하는 사람이다. 주의해야 할 것이 후회가 아니라 회고이다. 내가 생각하는 회고는 과거를 돌이켜보며, 더 나은 결과를 기대할 수 있지만, 후회는 과거에 사로잡혀 미래를 그리지 못하고 더 안 좋은 결과를 기대하게 된다.  나는 호기심이 많은 사람이다. 특..
·WIL
벌써 24년은 거의 지나가고있고, 이제 25년이 다가오고 있다. 이번 2024년은 어떠했을까? "좋았다." "나빴다." "성장했다." "유지했다." "퇴보했다". "모르겠다.", "바빴다." 등 많은 단어들이 떠오르는데, 어느 한 단어로 표현하기에는 많이 어려운 것 같다.(너무 당연한건가?) 하지만 한가지 내가 분명하게 느끼는 것이 하나 있다. "시간이 흐를 수록 점점 가속이 붙는 것 처럼 느껴진다"는 것이다. 시간은 언제나 일정하고 동일하게 흘러가나, 나는 점점 더 가속이 붙는 것처럼 느껴진다. "일을 할 때도, 왜 벌써 시간이..?", "출퇴근을 할 때도 왜 벌써 도착을..?", "운동을 할 때도, 왜 벌써 시간이..", "지인을 만날 때도, 우리가 벌써..?" 등.. 시간이 너무 빠르게 지나감을 느..
·아키텍처
나는 소프트웨어를 개발하면서, 제약조건을 항상 생각하고, 제약조건을 기점으로 대상을 구분한곤했다. 그리고 이런 습관은 업무를 진행하면서, 가끔은 소프트웨어가 아닌 하드웨어를 만드는 것은 아니냐? 라는 이야기를 듣곤했다. 그래서 나는 제약조건에 대하서 어떻게 설정해야하는가? 항상 고민이 되곤했다. 그런데 이번 독서(적정 소프트웨어 아키텍처)를 통해 제약조건에 대한 내용을 공부하게 되었다. 책의 전반적인 내용은 모두 제약조건과 관련된 이야기를 하고 있는데, 글을 작성하는 시점 기준 아직 이 책을 다 읽지 못했다. 하지만, 제약 조건에 대한 내용을 기록하기에는 굳이 다 읽고서야 할 필요는 없다는 생각이 들었고, 제약 조건에 대하여 정리를 해보고자 한다. 제약조건은 나쁜걸까?작성 중..
KEEMSY
목적, 수단, 목표