Software Engineering
-
어떻게 성장하고, 성장시킬 것인가?Mental Model 2023. 12. 17. 20:39
내면에 깊게 자리잡은 '성장 마인드셋'은 메타인지, 인내심과 회복력, 성취, 관계의 긍정적인 영향을 가져옵니다 [1]. 물론 '성장 마인드셋'은 성장의 근본에 존재합니다. 하지만 '성장 마인드셋'을 품고 시간이 조금 흐르게 되면 자연스레 다음과 같은 의문이 생겨나기 시작합니다. "노력과 경험을 통해 내가 성장할 수 있다는 사실은 이해했는데, 어떻게 더 잘 성장하고 성장시킬 수 있을까?" 애덤 그랜트 교수의 책 'Hidden Potential' [2]은 그에 대한 해답을 최신 연구결과에 기반해 말해주고 있습니다. 아래에서는 위의 책에 기반해서 성장을 위한 '성향 기르기', '지속하기' 2가지를 알아보겠습니다. 성장을 위한 성향 기르기 개인이 이룬 성공을 예측하는 연구결과에서 유의미한 지표는 '얼마나 오랜 ..
-
백엔드 개발자를 위한 네이티브 모바일 앱의 특징SE Concepts 2023. 12. 12. 00:50
모바일 앱이 가진 고유한 특징은 뒷단의 백엔드 개발에도 영향을 미칩니다. 이러한 특징들은 웹 기반 서비스에 익숙한 백엔드 개발자들이 쉽게 놓칠 수 있는데요. 많은 앱들이 웹뷰 형태로 네이티브와 웹을 결합한 형태로 구성되어 있으나, 그렇기에 더욱 네이티브 앱의 특징을 명확하게 인지하지 못하는 경우도 발생합니다. 이번 글에서는 Building Mobile Apps at Scale [1]의 내용을 중심으로, 백엔드 개발과 관련 깊은 네이티브 모바일 앱의 특징들을 알아보겠습니다. 모바일 앱은 바이너리가 스토어(구글플레이 또는 앱스토어)를 통해 업로드 되고, 유저가 모바일 기기에 다운로드 받아 설치되며 배포됩니다. 이러한 모바일 앱의 환경이 모바일 앱 개발과 네이티브 앱이 사용하는 백엔드 API 개발에 영향을 미..
-
'어떻게할지' 보다 '누구와할지'가 중요한 이유Mental Model 2023. 12. 12. 00:29
우리는 너무도 '어떻게'에 집중하며 살아왔습니다. '어떻게 더 좋은 팀을 만들지' '어떻게 더 많은 성과를 이룰 수 있을지' '현재 마주한 문제를 어떻게 해결할 수 있을지' ... 하지만 책 '누구와 함께 일할 것인가'의 저자 벤저민 하디 [1]는 우리가 '누구와'에 초점을 맞추어야 한다고 합니다. 마이클 조던은 팀 그로버 코치와 잭슨 감독이라는 조력자가 있었습니다. 그렇기에 그의 팀 시카고 불스는 여섯 번의 우승이라는 전례없는 기록을 세울 수 있었습니다. 스티브 잡스, 제프 베조스, 래리 페이지 등의 실리콘 밸리 거물들의 시작에는 빌 캠벨이라는 뛰어난 코치가 있었습니다. 이렇듯 뛰어난 업적을 빛내는 개인 주변에는 수많은 파트너와 조력자가 존재했습니다. 크고 멋진 결과는 사람을 통해서만 만들어집니다...
-
플랫폼이면 다 된다는 환상: FAANG의 실질적 경쟁우위와 살아남은 기업들Contents Review 2023. 12. 8. 00:22
검색엔진에 기반해 검색을 하려는 사람과 디지털 퍼블리셔 그리고 광고주를 '연결'한 구글. 앱스토어를 통해 앱 개발자와 사용자를 '연결'한 애플. 사람과 사람을 '연결'한 SNS 페이스북. 판매자와 구매자를 '연결'한 마켓플레이스 아마존. 폭발적으로 성장해온 디지털 플랫폼들과 역사속으로 사라진 아날로그 기업들을 보면서, '디지털 플랫폼이 되어 연결하면 뭐든지 가능하다'라는 맹신이 널리 퍼졌습니다. 플랫폼의 특징은 그것이 촉진하는 연결을 통해 핵심적인 가치가 나온다는 점입니다. 하지만 이러한 플랫폼은 디지털 시대 이전에도 존재했습니다. 그렇기에 IT 기업을 평가할 때에는 "On the most basic level, Peloton sells happiness" [2]과 같은 Yogababble [3]이 아니..
-
콘웨이의 법칙(Conway's Law) : '자세'를 잡지못한 조직이 '프로덕트'라는 힘을 쓸 수 없는 이유SE General 2023. 11. 26. 23:08
컴퓨터 과학자 Melvin Edward Conway는 다음과 같이 말했습니다. 시스템 디자인은 조직의 커뮤니케이션 구조와 유사한 형태의 시스템을 만들게 된다 [1] Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure 이 말을 곰곰히 생각해보면, 특정 구조의 시스템 디자인을 원한다면 그러한 커뮤니케이션 구조를 만드는 조직 디자인(Organization Design)을 먼저 해야한다는 점을 알 수 있습니다. 구체적 예시로 생각해보면, 이 말은 '마이크로서비스 아키텍쳐로 개발을 하려면, 마이크..
-
도커(docker). 컨테이너 vs 가상머신(Virtual Machine)SE General 2023. 11. 21. 00:37
컨테이너와 VM(Virtual Machine) 모두 물리 서버의 리소스를 격리시켜 한정된 환경을 제공하는데 사용됩니다. 그렇기에 여러 부분 비슷한 특성을 보이면서도, 특징적으로 다른 부분들이 존재하는데요. 이번 글에서는 2가지를 비교하며 이해해보도록 하겠습니다. 어떻게 다른가? 먼저, 컨테이너와 VM 모두 실행될 host가 필요합니다. 이러한 host는 노트북, 데이터 센터의 bare metal 서버, 퍼블릭 클라우드의 인스턴스 등에 해당됩니다. 먼저, 가상화를 통해 3개의 앱을 실행한다고 가정해보겠습니다. 그러면 위 이미지의 좌측과 같이, 물리 서버에 하이퍼바이저를 띄우고 하이퍼바이저가 물리 서버의 리소스(CPU, RAM, storage, network card 등)를 나누어 VM에게 할당하고 패키징합..
-
도커(docker) 내부구조(internal)SE General 2023. 11. 19. 23:24
함께 읽으면 좋은 글 도커의 네트워킹 도커의 보안 도커 엔진(Docker Enginer)은 컨테이너를 실행하고 관리하는 핵심 소프트웨어입니다. 도커 엔진은 주로 도커 그 자체로 부르기도 하는데요. 이번 글에서는 우리가 'docker' 커맨드로 컨테이너를 실행하는 CLU를 입력했을 때 무엇을 통해 어떻게 동작하는지 알기 위해, 도커 엔진의 내부구조를 살펴보겠습니다. 도커의 실행 구조 우리가 도커로 컨테이너를 실행할 때에 흐름과 구조는 아래와 같습니다: runc 먼저, 가장 아래의 실행되고 있는 컨테이너는 그 위의 runc에 의해 실행됩니다. runc는 OCI(Open Container Initiaive) 컨테이너 런타임 스펙 구현체로 , Docker, Inc가 스펙을 정의하고 개발하는데에 깊은 관여를 하였..
-
고부가가치 개발Mental Model 2023. 11. 19. 00:16
최근 팀내에서 논의가 있었다. 내부 툴 Front 단 개발을 어떤 형태로 진행할까에 대한 논의였다. 보통 '이러한' 개발은 특정 이름 a라고 불리는 팀에 요청하여 처리하였기에, 이번에도 그런 형태로 처리하자고 마무리가 되었다. 내부에서 보면 '뚜렷하게' 차이가 나지 않는 팀 a는 명확히 구분하자면 외부사로, 특정 계약을 통해 프로젝트별로 비용을 지불하는 것으로 보였다. 그 순간 내 머릿속에 떠오른 질문은 '어떤 기준으로 특정 작업(A)은 외주를 맡기고, 특정 작업(B)은 직접 고용한 인원으로 개발을 진행할까?'였다. 이어서, '그렇다면 내 밥값은 A 대신 B라는 특정 작업을 하고 있다는 사실로 정당한걸까?'였다. 순간 스쳐지나간 생각을 글로 '끌고올' 정도로, 의미가 있다고 느꼈던 이유는 1. 이 부분..