Software Engineering
-
셀레니움 내부구조 (Selenium Internals)SE General 2021. 3. 29. 21:48
이 글에서는 자동화 웹 테스트나 웹 스크래핑을 진행해보셨다면, 한 번쯤은 들어보셨을 셀레니움(Selenium)의 내부구조를 살펴보려 합니다. 먼저 넓은 범위의 아키텍쳐를 살펴보고, 실제 주요 로직이 어떻게 동작하는지 코드 레벨까지 살펴보도록 하겠습니다: 셀레니움이란? 셀레니움 아키텍쳐 파이썬 Selenium 요청의 flow 셀레니움이란? 셀레니움의 시초는 2004년 Thought Works에서 Jason Huggins가 내부 도구로 개발한 JavaScriptTestRunner입니다. 그러한 JavaScriptTestRunner는 Selenium Core가 되어 현재의 Selenium을 이루고 있습니다. 발전하던 Selenium에 남아있던 문제 중 한 가지는 로컬 환경에서의 "Same Origin Poli..
-
테크니컬 라이터란? (Technical Writer)SE General 2021. 3. 28. 17:07
헤드헌터를 통해 들어온 토스의 데이터 엔지니어 직무를 살펴보던 중 토스페이먼츠가 'Technical Writer'를 채용하고 있는 것을 발견하였습니다. 동시에 과거 Facebook 출신의 회사 동료의 "페이스북 문서의 90% 정도를 천재적인(?) Technical Writer 한 명이 작성하였다"(진위는 생략...)는 말이 생각났습니다. 이 기회에 테크니컬 라이터의 Job Description 및 국내외 동향을 살펴보고, 그러한 역량을 어떻게 기를 수 있는지(또는 교육 코스는 어떤지) 살펴보고자 작성하였습니다: 테크니컬 라이터란? 국내외 해당 직무에 대한 시장 어떻게 역량을 기를 수 있을까? 테크니컬 라이터란? 테크니컬 라이터란 전문적인 정보 커뮤니케이터로, 다자간 정보를 가장 잘 전달하고 이해시킬 수 ..
-
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-검정 결정계수 추정값의 표준오차 상관계수와 결정계수 단순회귀모형 단순회귀..