반응형

2019/12 9

[개발관련도서] 조엘 온 소프트웨어(3/3)

3부 조엘 따라하기: 두서 없는 생각, 하지만 놓쳐서는 안 될 이야기 30장 - 이 나라에서는 개가 무슨 일을 하죠? 자기 개밥을 먹는다 '자기 개밥을 먹는다'는 말은 컴퓨터 분야에서 쓰는 표현으로, 자기회사 제품을 실제로 사용해 보는 과정을 말한다. 저자는 출시 전회사의 제품을 직접 사용해봤는데, 버그 몇 개 때문에 작업 진행이 불가했다. 꼼꼼하게 테스트 과정을 거쳤지만, 제품 기능을 수행하지 못하게 하는 치명적인 버그는 다 고치지 못한 것이다. 고객 입장에서 제품을 실행해보니 버그가 바로 보였다. 이후 팀을 소집해서 모두 자사의 제품을 써서 사이트를 구축해 보자고 제안했다. 이게 바로 '자기 개밥 먹기'이다. 다들 자기 개밥 먹기를 해봐야 한다. 투자자금을 모으려고 전국을 누비는 대신, 고객 의견에 ..

[개발관련도서] 조엘 온 소프트웨어(2/3)

2부 개발자 다루기 20장 - 인터뷰를 위한 게릴라 가이드 대체로 직원을 고용하는 방식 이력서 - 꼼꼼하지 못한 이력서는 꼼꼼하지 못한 업무처리로 이어진다라고 생각 전화 인터뷰 - 프로그래밍 문제 하나로 30분 정도 이야기를 나누는데, 같은 내용을 반복해서 설명하거나 독창적인 생각이 없는 경우 탈락시킴 대면 인터뷰 - "기본적인 자질을 갖췄는가", "(재미 삼아) 토이 프로젝트를 하는가" 등의 질문을 통해 똑똑한 사람을 가려냄 이런 사람을 뽑아라 똑똑하다 -> 같은 설명을 여러 번 반복할 필요가 없다면 좋은 신호 업무를 성실하게 완수한다. 요즘은 어떤 기술이든 이삼 년이면 낡어버린다. 지금 당장 JDBC와 MySQL 데이터베이스를 연동할 줄 아는 사람보다는 새 기술을 배울만한 자질이 있는 사람을 고용하는..

[개발관련도서] 조엘 온 소프트웨어(1/3)

1부 비트와 바이트: 프로그래밍 실전 2장 - 기본으로 돌아가기 사람들이 저지르는 가장 큰 실수 중 몇 가지는 최저층에서 벌어지는 몇 가지 단순한 동작원리를 자세히 알지 못하거나 아예 잘못 알고 있기 때문에 생긴다. C언어의 strcat 함수와 러시아 페인트공 알고리즘을 통해 기존의 라이브러리의 성능이 좋지 않을 수도 있음을 나타냈고 더 나은 해결책을 제시했다. 또한 작성한 코드가 실제 메모리 상에서 어떻게 어떻게 동작하는지를 malloc 함수를 통해 설명했다. 저자는 strcat과 malloc이 실제로 어떻게 움직이는지를 보며 밑바닥이 어떻게 작동하는가를 알아야 한다고 말한다. 이 말인즉슨, '여러 기술을 다룰 때 밑바닥을 항상 염두하여 최상위 전략과 아키텍처 결정에 활용하라'이다. 요즘 입문자가 시작..

[Linux] Capabilities

(Traditional) superuser and set-UID-root programs 전통적인 유닉스 권한 모델은 사용자를 두 그룹으로 나눈다 일반 유저(Normal users): UID, GID 기반으로 권한 검사 대상 슈퍼 유저(Super user(UID = 0)): 일련의 검사를 우회(bypass) 권한이 없는 사용자에게 권한을 부여하는 전통적인 메커니즘은 `set-UID-root` 프로그램이다. # chown root prog # chmod u+s prog `set-UID-root`프로그램이 실행되면, 프로세스는 파일 소유자의 UID로 가정한다. 즉, 프로세스는 슈퍼 유저의 권한을 얻는다. 이러한 방식은 효과적일 수 있지만 위험한 방법이기도 하다. The traditional privilege..

운영체제/LINUX 2019.12.17

[Linux] 사용자(User) 네임스페이스

사용자 네임스페이스를 사용하면 유저 및 그룹 ID의 네임스페이스 별 맵핑이 가능하다. 이는 사용자 네임스페이스 내부의 프로세스 사용자 및 그룹 ID가 네임스페이스 외부의 ID와 다를 수 있음을 의미한다. 특히, 프로세스는 네임스페이스 외부에서 0이 아닌 사용자 ID를 가질 수 있는 동시에 네임스페이스 내부에 0인 사용자 ID를 가질 수 있다. 즉, 프로세스는 유저 네임스페이스 외부의 작업에 대해 권한이 없지만 네임스페이스 내부에서는 루트 권한이 있다. Creating User namespaces `clone()` 또는 `unshare()`를 호출 시 `CLONE_NEWUSER`플래그를 지정하여 사용자 네임스페이스가 만들어진다. 리눅스 3.8부터(다른 유형의 네임스페이스를 만드는 데 사용되는 플래그와는 달..

운영체제/LINUX 2019.12.16

[Linux] PID 네임스페이스

PID 네임스페이스는 프로세스 ID공간을 격리한다. 즉, 다른 PID 네임스페이스의 프로세스들은 같은 PID를 가질 수도 있음을 의미한다. PID 네임스페이스들은 컨테이너로 하여금 프로세스 집합의 종료/재시작 같은 기능을 제공한다. 또한 컨테이너를 새로운 호스트로 마이그레이션 하는 등의 기능을 제공한다.(마이그레이션 할 때 컨테이너 안의 프로세스들은 자신의 PID를 유지한다.) 새로운 PID 네임스페이스는 1부터 시작한다. standalone 시스템과 동일하게 각 네임스페이스의 시작 프로세스는 PID 1번을 가지게 된다. The namespace init process 새로운 네임스페이스에서 생성된 첫번째 프로세스는 PID가 1이고, 새 네임스페이스의 `init`프로세스이다(`CLONE_NEWPI`플래그..

운영체제/LINUX 2019.12.14

[Linux] IPC 네임스페이스

IPC 네임스페이스 IPC 네임스페이스는 프로세스가 자신의 System V IPC 객체와 POSIX 메시지 큐 자원을 가질 수 있게 한다. 그리고 `clone()` 또는 `unshare()` 시스템 호출을 사용할 때 `CLONE_NEWIPC`플래그를 설정하여 생성한다. System V IPC 객체: 공유 메모리(shared memory), 세마포어(semaphore) 공유 메모리: 여러 프로세스가 동일한 메모리 영역에 연결하여 메모리 변경 사항에 액세스할 수 있다. 세마포어: 프로세스를 동기화하며 공유 메모리 영역에 대한 동시 액세스를 제어하는데 사용된다. POSIX 메시지 큐: System V 메시지 큐의 새로운 버전. 함수의 이름과 종류는 다르지만 하는 일은 비슷하고 비교적 최근의 표준인 만큼 Sys..

운영체제/LINUX 2019.12.13

[Linux] UTS 네임스페이스

UTS 네임스페이스 다른 UTS 네임스페이스가 서로 다른 호스트 이름이나 도메인 이름(또는 `uname()`시스템 콜로 리턴된 정보(nodename, domainname))를 갖게 하는 기능을 제공 `clone()` 또는 `unshare()` 시스템 콜을 사용할 때 `CLONE_NEWUTS` 플래그를 설정하여 생성 nodename, domainname은 `sethostname()`, `setdomainname()`시스템 콜을 사용하여 설정 컨테이너 관점에서의 UTS 네임스페이스 기능은 각 컨테이너가 자체 호스트 이름과 `NIS` 도메인 이름을 가질 수 있도록 한다. `NIS(= Network Information System)`: 컴퓨터 네트워크 위의 컴퓨터들 사이에 있는 사용자와 호스트 이름과 같은 시..

운영체제/LINUX 2019.12.13

[개발관련도서] 나는 LINE 개발자입니다

이 책을 읽고 '라인 채용'을 검색하지 않은 사람이 누가 있으랴! 2주일동안 읽으려고 빌린 책을 하루만에 다 읽어버렸다. 책을 덮자마자 바로 '라인 채용'을 검색해서 가고싶은 분야의 자격요건 및 우대사항을 쭉 훑어보았다. 그 중 내 눈에 들어온 채용 공고는 'Cloud Native Platform 개발 및 운영'이다. 석사 1,2학기를 보내며 컨테이너 기술에 대해 공부했고, 7~8월엔 5명이 팀을 꾸려 맨텍이 주관한 '2019 오픈 인프라개발 경진대회'에 참가했다. Istio, Prometheus 및 Kiali를 이용한 모니터링 서비스를 구축했고 금상을 거머쥐었다. 학부연구생일때도 Django 기반의 오픈스택(Openstack) Horizon을 커스터마이징하는 프로젝트를 진행했어서 더욱 클라우드에 관심을..

반응형