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

·아키텍처
개방 폐쇄 원칙, Open-Closed Principle(OCP)개방 폐쇄 원칙은 확장할 때는 개방, 수정할 때는 폐쇄 원칙으로 불린다. 이는 SOLID 원칙 중에서도 가장 이해하기 어렵고, 마스터하기 어려우면서도 가장 유용한 원칙이다.개방 폐쇄 원칙을 이해하기 어려운 이유는 코드를 변경할 때 그 결과를 확장으로 보아야하는지, 수정으로 보아야하는지 명확하게 구분하기 어렵기 때문이다.개방 폐쇄 원칙이 숙달하기 어려운 이유는 '확장할 때는 개방, 수정할 때는 폐쇄' 라는 개념을 어떻게 달성할 것인지, 높은 확장성을 추가하면서 코드의 가독성에 영향을 미치지 않도록 이 원칙을 프로젝트에 어떻게 유연하게 적용할 것인지와 같은 문제는 이해하기 어려운 문제에 속하기 때문이다.하지만 개방 폐쇄 원칙은 확장성이 코드 품..
·회고
요즘 긴급한 일들이 자꾸만 발생한다. 업무적으로나 개인적으로나 말이다.스프린트(핵심 업무)중 고객 CS처리 요청이 들어온다.개인 시간 중 지인의 도움(?)요청이 자꾸만 생긴다. 그런데 지나고 보면 그리 긴급하지 않은 일들이 대부분이었다. 혹시 나 스스로 '가짜 긴급함'을 만들어내고, 그 안에서 허우적거린 것은 아닐까? 하는 질문을 스스로 던져본다.스프린트 중 발생하는 다른 업무 요청들나의 업무 중 핵심 업무는 스프린트(신규 기능 개발 및 개선 업무)이다. 그리고 팀 내에서도 핵심 업무는 스프린트로 정의하고 있다. 개인적으로 나의 가치의 우선순위는 신규 기능 개발보다는 기존 기능의 개선이 높다. 하지만, 팀 내 의사결정에서는 현 상황에서 신규기능 개발에 우선순위를 더 높게 평가하고 있다. 나는 왜 유지보수..
·회고
25년을 보내고 26년을 맞이했다. 새해라고해서 크게 달라지는 것은 없으나, 전반적인 지난 25년을 돌이켜보고, 26년에 대한 목표를 정리해보고자 한다. 지난 25년에 대한 목표는 크게 3가지이고, 내용은 지난 회고글에 작성해두었다. 기술적 깊이와 비지니스적 관점의 균형지속 가능한 (클린)코드 작성사용자 중심의 문제 해결목표한 바를 이루었는가? 라고 자문한다면, 반은 성공하고, 반은 실패했다 이야기 할 것 같다.25년의 목표들에 대한 나의 생각내가 바라본 성공이 다른 사람이 보기에는 실패 아닌가? 라고 바라볼 수도 있다. 그러나 지금 내 자신을 돌이켜보는 글에서는 나 중심적으로 작성해본다.내가 바라본 성공: 해당 목표를 위한 액션이 존재하는가 이다. 나는 3가지 목표를 모두 성공했다고 생각한다. 하지..
·회고
벌써 12월이 끝이 났다. 아니 25년이 끝이 났다. 25년에 대한 회고는 다음 회고에서 정리해보도록하고..이번 12월도 역시나 정말 정신없이 지나갔다. 유독 더 정신없었다. 돌이켜본 12월은 해야할 일들이 너무 많아 주변을 살피기도, 내 자신으 살피기도 어려웠다. 그래도 이런 상황 속에서 어떻게든 틈을 찾아보려 한 내 자신이 뿌듯하다.(효율성, 성과를 떠나서 말이다.) 12월의 큰 키워드는 스프린트, 그리고 목표인듯하다. 5주의 신규 기능 스프린트가 무사히(?) 잘 끝났다. 스프린트 + 멘토링 세션을 진행하면서 25년에 대한 결과와 성과를 돌이켜보며, 새로운 목표를 세웠다.5주의 스프린트의 끝혼자서 모든 개발을 하기 시작한지 벌써 3개월이 지났다. 지난 3개월, 특히 이번 12월은 정말 위험한 한달이자..
·회고
벌써 크리스마스가 거의 다가왔다. 스프린트도 막바지에 돌입하여, 핵심 기능 개발은 거의 마쳤고, 남은 세부항목들을 개발하고 있다.정말 다행히도, 이번 스프린트를 무사히 끝 마칠 수 있을 것 같다. 시작 전, 중 모두 걱정이 많은 스프린트였는데, 무사히 잘 끝낼 수 있을 것 같다는 생각이 들어 다행이다.(물론 방심할 순 없지만) 지난 주 운이 좋게(?) 참여가헤된 멘토링 세션을 듣고서, 다양한 생각들이 많이 떠오르고 있는데 생각의 정리는 참 어렵다. 생각 정리는 러닝하면서 하는게 정말 좋은데, 부상때문에 달리지 못하는 것도 너무 속상하다. 생각들의 공통된 내용은 "이펙티브 엔지니어가 되기 위해서는 무엇을 해야하는가?" 이다. 지난 날부터 지금까지 그리고 미래까지 가장 고민해야하고, 필수적으로 개발해야할 역..
KEEMSY
목적, 수단, 목표