전체 글
-
DDD란? ((Business) Domain-Driven (Software) Design)SE Concepts 2021. 3. 28. 14:02
최근 외주로 운영 되던 서비스를 내재화하는 작업을 담당하게 되면서, 특정 도메인의 목적을 위해 구현된 소스코드를 이해하는 데에는 순전히 '기술적'인 사항만 존재하지 않는다는 사실을 절실히 깨달았습니다. '모바일 쿠폰 서비스'라는 컨택스트 상에서는 당연하고 상식적인 흐름이, 그러한 컨택스트를 제외한 '기술적'요소들만을 살펴보았을 때는 터무니 없이 복잡하고 어렵게 느껴졌습니다. 또한, 서비스에 요구사항을 전달하는 그 근본에는 '도메인'이 존재하기 때문에 서비스에 대한 이해는 '도메인에 대한 깊은 이해'에 기반한다는 점을 실감하고 있습니다. 많은 소프트웨어가 실패하고, 그러한 소프트웨어의 실패의 원인들은 대다수 '커뮤니케이션'과 관련된 문제점을 포함한다고 합니다 [2]. 이 부분에서 DDD(Domain-Dri..
-
레거시를 파악하고 변경해나가기: 우선순위와 고려사항들SE Concepts 2021. 3. 18. 22:20
최근 외주 인력이 운영하던 서비스를 내재화하는 팀으로 이동하게 되었습니다. 2000년대 중반에 시작되어 10년이 넘는 기간 동안 여러 회사와 다양한 외주 인력으로 관리 되던 서비스는 Spring, DWR, Struts, JSP, Apache Mina 등 다양하고 오래된 프레임워크를 사용하였습니다. 문서화도 잘 되어 있지 않고 단기간에 이제 계약이 끝나가 자세한 인수인계를 받기 어려운 서비스를 파악해가면서, 어떻게 30개로 흩어져 있는 코드를 BitBucket, 소스코드를 효율적으로 파악할 수 있을까?라는 생각을 많이 하였습니다. [1]의 Working Effectively with Legacy Code는 한 가지의 레거시 코드를 어떻게 안정적으로 변경해나갈 수 있을까?라는 부분에 Testing과 Scop..
-
오라클 DB 아키텍쳐 살펴보기 (Database, Instance, Files, Memory, Process)SE General 2021. 3. 12. 06:53
RDS란? - AWS의 관계형 데이터베이스 서비스들 알아보기 Amazon Web Service는 클라우드 환경에서 다양한 관계형 데이터베이스 서비스를 제공해주고 있습니다. 이 글에서는 관련된 중점 사항들은 무엇이 있고, 어떠한 서비스들이 존재하는지 알아보겠습니 kadensungbincho.tistory.com 오라클 데이터베이스(Oracle Database)는 오라클 기업에서 만든 멀티 모델 데이터베이스 시스템입니다. 그리고 오라클 DB는 주로 OLTP 또는 데이터 웨어하우징 작업에 사용됩니다. 1979년에 처음 출시되어 23번의 릴리즈(또는 버젼)을 만든 만큼 복잡하고 넓은 환경을 가지고 있습니다. 경쟁사의 Microsoft SQL Server, IBM의 Db2 등과 경쟁하고, 대안이 될 수 있는 다양..
-
웹페이지 요청 후 응답을 받기까지... (feat. DHCP, UDP, IP, Ethernet, DNS, ARP, BGP, TCP, HTTP)SE General 2021. 3. 8. 17:43
주니어 개발자에게 추천하는 책 TOP 12 5년차로 접어드는 동안, 대학에서 CS를 전공하지 않았기에 '비는 지식'을 채우기 위해 노력했었는데요. 이 글에서는 읽었던 +100권 중 CS, Software engineering 책들 중 가장 좋았던 11권을 뽑아보았습니 kadensungbincho.tistory.com | 이 글은 많은 부분 [1]을 차용하였습니다 네트워크는 5 layers, OSI 7 계층 등과 같이 여러 가지 레이어로 나누어 구분되곤 합니다. 하지만 단순한 하나의 웹페이지 요청 후 응답을 받는데도 여러 레이어에 걸쳐서 배웠던 다양한 요소들이 관여하게 됩니다. 이 글에서는 웹페이지 요청 후 응답까지의 과정을 순서대로, 상세히 알아보며 다양한 레이어와 프로토콜들을 좀 더 짜임새 있게 복습해..
-
제프베조스의 후회최소화 관점 (Regret Minimization Framekwork)Mental Model 2021. 3. 7. 09:05
일견 커다랗게 보이는 일들은 잘게, 작은 단위로 쪼개어 하나씩 클리어 해나갈 수 있습니다. 인생에서 중요한 결정들도 '커다랗게 보이는 일들' 중 하나인데요. 그러한 중요한 결정을 하는 일들의 작은 단위 중 가장 처음 필요한 일은 바로 결정에 필요한 관점을 확립하는 일입니다. 아마존을 창립한 제프 베조스에게도 그런 일이 있었습니다. 제프 베조스는 1994년에 월스트리트의 잘 나가는 헤지펀드 D. E. Shaw & Co에서 근무하며 상사에게 좋은 창업 아이디어 '아마존'에 대해 이야기를 하였습니다. 베조스가 상사로부터 받은 피드백은 "매우 좋은 아이디어인 것 같다. 그런데 그 아이디어는 직업이 없는 누군가에게 더 적합한 아이디어인 듯 하다. 48시간 동안 진지하고 깊게 고민해보아라 (그만두고 창업하는 것을)..
-
단순회귀모형Math as Code 2021. 3. 4. 20:08
회귀분석(Regression Analysis)은 독립변수(들)과 종속변수 간의 함수관계를 규명하는 통계적인 분석방법입니다. 회귀란 용어는 영국의 우생학자 (다윈의 친척이었던) 갈튼이 콩의 유전 관계(heredity)를 살펴보던 중 "본래의 자기 자리로 돌아 온다"는 뜻에서 개념을 확립하고 사용하였습니다. 이러한 발견은 피어슨 상관계수보다 이전으로 갈튼이 회귀와 관련한 주요개념을 먼저 확립했음과 동시에 많은 교과 내용의 순서와 달리 상관계수보다 회귀가 먼저 '개발'되었다는 점을 시사합니다 [1]. 이번 글에서는 다음과 같은 사항들을 알아보겠습니다: 단순회귀모형 회귀선의 추정 회귀선 최소제곱법 잔차 회귀모형의 평가 분산분석표에 의한 F-검정 결정계수 추정값의 표준오차 상관계수와 결정계수 단순회귀모형 단순회귀..
-
[Hands On] 아파치 에어플로우 도커환경에서 핸즈온 - #1 기초 (Apache Airflow)Data 2021. 3. 1. 21:22
아파치 에어플로우는 '작업흐름'을 코드를 통해 작성하고, 스케쥴하고, 모니터링하기 위한 데이터 워크플로우 매니지먼트 도구입니다. 여기서 작업흐름은 하나이 쉘 스크립트를 실행하는 것, 웹사이트에 접근에 특정 수행을 통해 데이터를 다운 받고 다운이 받아졌다면 파싱하여 슬랙 알림을 보내는 것 등 다양한 의존적인 작업들의 흐름이 포함됩니다. 이 글에서는 도커 환경에서 아파치 에어플로우 클러스터를 빠르게 올려서 아래와 같은 사항들을 중점으로 설명드리도록 하겠습니다: 준비사항 주요개념 간단한 작업 수행 시 일어나는 일들 아파치 에어플로우 클러스터 아키텍쳐 준비사항 및 클러스터 띄우기 아래 도커 환경에서 아파치 에어플로우를 실행하기 위해서는 아래와 같은 것들이 필요합니다: Git Docker 및 Docker Comp..
-
IPFS란? (InterPlanetary File System)SE General 2021. 2. 25. 21:21
IPFS (InterPlanetary File System)이란 프로토콜이며, 분산 파일 시스템에서 데이터를 공유하고 저장하기 위한 peer-to-peer 네트워크입니다. IPFS는 모든 컴퓨팅 기기를 연결하는 글로벌 네임스페이스에서 각 파일을 식별하기 위해서 content-addressing을 사용합니다 [5]. 이와 같은 IPFS는 일면으로 웹과 유사하나, IPFS는 하나의 Git repository 안의 객체를 교환하는 하나의 BitTorrent Swarm에 좀 더 가깝습니다. 다른 표현으로는, IPFS는 높은 처리량의 content-addressed 블록 스토리지 모델을 content-addressed 하이퍼링크를 통해 제공합니다. 그리고 이것은 일반화된 Merkle Dag를 형성하여 버져닝된 파..