[GN#93] 1인 기술 스타트업의 아키텍쳐 스택

2021-04-12 ~ 2021-04-18 사이의 주요 뉴스들
클라우드가 가져다준 가장 큰 변화 중 하나는 누구나 쉽게 대규모 서비스를 만들 수 있는 환경이 가능해졌다는게 아닐까 합니다. IDC에서 서버 한 대 받아서 힘들게 운영하는 게 아니라, 원하는 기능들만 쉽고 편하게 가져다가 안정적으로 스케일링 할 수 있게 되면서, 1인 또는 소규모 스타트업들이 아이디어를 빠르게 구현해보고 사용자 트래픽을 끌어 내면서 폭발적으로 성장할 수 있는 기반이 가능해진 거 같아요. 즉 요즘의 환경은 1인 개발자들에게 정말 좋아졌다고 볼 수 있는데요. 독일의 Anthony Simon이라는 개발자가 자신이 혼자 SaaS를 만들면서 스트레스 없이 운영하는 기술 기반들을 설명한 " 1인 기술 스타트업의 아키텍쳐 스택 (The Architecture Behind A One-Person Tech Startup)" 글이 큰 인기를 끌었습니다. 꼭 1인 스타트업이 아니더라도 참고할만한 내용이 많으니 꼭 읽어보시기 바랍니다. 저는 국내에도 자기 서비스로 돈을 버는 1인 개발자 또는 소규모 팀들이 더 많이 나왔으면 합니다. 긱뉴스는 그런 서비스들이 자신을 알리고, 건전한 피드백을 받는 공간으로 성장했으면 좋겠어요.

Photopea는 웹에서 포토샵의 PSD, 일러스트레이터의 AI, Figma 나 Sketch 등의 파일을 읽어서 레이어 편집부터 필터 적용까지 가능한 무료 포토샵 대체제입니다. 개발자는 포토샵의 90% 정도 기능을 지원한다고 하는데요. 개발자는 2012년에 취미로 개발을 시작해서 이 앱을 9년째 업데이트하고 있는데, 2017년부터 광고를 붙여서 수익을 내기 시작했고, 2019년 기준으로는 약 2.8억원의 광고 수익을 올렸으며 매년 사용자가 두 배씩 늘어나고 있어서 2020년에는 2~4배 정도의 수익을 예상한다고 합니다. 놀라운건 이 앱은 서버 기능이 전혀 필요 없는, 오프라인에서도 사용 가능한 1.8Mb짜리 웹앱이라서 년 호스팅 비용 $50 밖에 안 든다고 합니다. 클라우드에서 서비스를 운영해서 돈을 버는 방법도 있지만, 이렇게 훌륭한 웹앱 하나를 개발해서 돈을 버는 것도 가능하다는 걸 보여주는 사례인 듯 하네요. 재미난 건 사이트에 뜨는 광고중에 Adobe CC 광고가 유독 많더군요. 포토샵 대체제를 만들었는데 정작 Adobe 광고로 돈을 버는 것도 나름 선순환 구조(?) 일듯 합니다.

GeekNews는 Y Combinator가 운영하는 HackerNews(HN)를 모태로 만들어졌습니다. 2007년에 만들어진 해커뉴스는 YC의 창업자인 폴 그레이엄이 직접 만든 기술뉴스 사이트인데요. 수십만명의 사용자에 의해 매일 수백 개의 뉴스가 주로 제목과 링크만 포함해서 등록이 됩니다. 즉, 자신이 만든 걸 공유하는 Show 나 질문을 올리는 Ask 같이 특별한 용도의 글 외에는 본문이 없어서 뉴스들은 실제 콘텐츠 내용은 포함되어 있지 않은데요. 그래서 검색을 하면 제목과 댓글만으로 찾아야 하니까 검색의 효용성이 좀 떨어지게 됩니다. (해커뉴스의 검색은 직접 개발한게 아니고, YC에서 투자했던 Algolia 라는 검색 SaaS 서비스가 외부에서 제공을 해주고 있습니다.) 이번주에 공개된 DeepHN은 이 해커뉴스에 올라온 3천만개 포스트의 제목/댓글과 실제 그 링크의 외부 URL에 들어 있는 페이지 내용까지 인덱싱해서 통합 검색을 제공하는 웹사이트 입니다. Algolia와 비슷한 검색 SaaS인 SeekStorm이 자신들의 SaaS 홍보용으로 만든 사이트라고 보시면 될 것 같아요. 해외 SaaS들은 요즘 이렇게 사람들이 쓰기에 좋은 뭔가를 샘플로 개발해주고, 그리고 일부는 오픈소스로 공개하는 방식을 취하면서 사람들의 주목을 끌고 그 기반으로 더 성장하게 만드는 프로세스를 좋아하는 것 같습니다. SaaS 개발하는 회사에서는 이런 사례들을 참고하시면 좋을 것 같아요.


✓ 사내에서 슬랙을 쓰신다면 뉴스채널에 GeekNews SlackBot 을 추가하여 편하게 새 글을 받아보시고, 멤버들에게도 공유해주세요.
✓ 주위분들께 긱뉴스 위클리 - https://news.hada.io/weekly 를 추천해 주세요.
Twitter , Facebook 에서도 긱뉴스를 받아 보실 수 있습니다.

매주 월요일 아침, 지난 일주일간의 GeekNews 중 엄선한 뉴스들을 이메일로 보내드립니다.


1인 기술 스타트업의 아키텍쳐 스택

- 스트레스 없이, 느릿하게 SaaS를 운영하는 1인 개발자의 아키텍쳐 설명
- 여러개의 프로젝트를 동시에 운영하는 인프라를 구성했음
- 자신이 최근에 만든 PanelBear 라는 SaaS를 기준으로 설명
ㅤ→ 가장 작은 VPS에서 SQLite + Django로 시작
ㅤ→ 6개월간의 이터레이션을 통해, EKS 위에서 Django 모노리스 + Postgres + ClickHouse(분석) + Redis(캐싱) + Celery(예약 작업)
ㅤ→ 대부분 자동화 : 오토스케일링, ingress, TLS 인증서, failover, 로깅, 모니터링 등
ㅤ→ 이 설정을 여러개의 프로젝트에서 사용하므로, 비용을 줄이고 실험들을 정말 쉽게 시작할 수 있음
ㅤ→ 인프라 관리에는 거의 시간이 들지않음 (한달에 0~2시간).
ㅤ→ 대부분의 시간은 기능 개발, 고객 지원, 비즈니스를 성장시키는데 사용

- AWS에서 Kubernetes를 사용하지만 꼭 이게 필요한 건 아님. 다만, 본인은 익숙하기에 안정적으로 운영할 수 있다고 생각.
ㅤ→ 참을성 있는 팀(에러를 같이 참고 막아줄)에서 이 도구를 몇년간 사용하며 배웠음
ㅤ→ "쿠버네티스는 단순한 걸 복잡하게 만들지만, 복잡한 것을 단순하게 만들기도 함"

- 자동 DNS, SSL 및 로드밸런싱
ㅤ→ CloudFlare Proxy 에서 AWS L4 NLB(Network Load Balancer) 로 모든 트래픽 전달
ㅤ→ Request가 들어오면 LB가 k8s 클러스터 노드중 하나로 포워드
ㅤ→ 이 노드들은 여러개의 AZ(Availability Zone) 에 걸쳐져 있는 프라이빗 서브넷에 있음
ㅤ→ k8s 가 요청할 서비스를 알아내는 것은 ingress-nginx(Nginx 클러스터) 가 함
ㅤ→ nginx가 트래픽 전달전에 RateLimiting 및 트래픽 쉐이핑 규칙을 적용
ㅤ→ PanelBear의 경우 앱 컨테이너는 Uvicorn 에서 서빙되는 Django
ㅤ→ Terraform/K8s 간에 몇개의 설정파일이 있고 그걸 대부분의 프로젝트가 공유
ㅤ→ 새 프로젝트 배포 할때 20 라인 정도의 ingress 설정으로 가능

- 자동 롤아웃 및 롤백
ㅤ→ 마스터에 푸시할때마다 GitHub Actions 로 CI 파이프라인 실행
ㅤ→ 코드베이스 검사, Docker-Compose로 완전환 환경을 만들어 E-to-E 테스트
ㅤ→ 검사 통과시 ECR(AWS의 Docker Registry)로 푸시되는 새 Docker 이미지를 빌드
ㅤ→ k8s 클러스터에 flux 컴포넌트 ( https://fluxcd.io/ ) 가 알아서 클러스터내의 이미지를 동기화
ㅤ→ Flux 가 자동으로 Incremental Rollout 실행

- Horizontal Autoscaling
ㅤ→ CPU/메모리 사용량 기반으로 오토스케일링
ㅤ→ 클러스터의 노드당 Pod가 너무 많은 경우 자동으로 더 많은 서버를 생성해서 클러스터 용량을 늘리고 부하를 줄임. 일이 없을때는 축소
ㅤ→ Panelbear 의 경우 API Pod를 2개에서 8개까지 복제본을 자동 조정

- CDN을 이용해서 Static Asset 캐슁
ㅤ→ CloudFlare를 DNS에 설정해서, 모든 요청을 처리하고 DDoS 방지까지 처리
ㅤ→ Static 파일 서빙에는 Whitenoise ( https://github.com/evansd/whitenoise ) 를 사용해서 NGinx/Cloudfront/S3에 파일 업로드할 필요가 없음
ㅤ→ Panelbear 의 랜딩 같은 몇개의 정적 웹사이트에는 NextJS 를 사용

- 어플리케이션 데이터 캐슁
ㅤ→ 일정부분에서는 파이썬이 제공하는 인메모리 LRU 캐슁을 사용
ㅤ→ 대부분의 엔드포인트는 인 클러스터 Redis를 사용

- EndPoint 당 Rate Limiting
ㅤ→ nginx-ingress 에서 글로벌 레이트 리밋을 하지만, 가끔 엔드포인트/메소드 당 특정 리밋을 줄 필요가 있음
ㅤ→ Django Ratelimit 라이브러리를 사용해서 Django 뷰당 제한을 선언 가능
ㅤ→ Redis 를 백엔드로 사용해서 각 엔드포인트에 요청하는 클라이언트를 추적하도록 구성(IP가 아닌 클라이언트 키 기반 해시)

- App Administration
ㅤ→ Django 의 Admin Panel 이 기본적으로 데이터를 보고 편집하는 기능들을 지원
ㅤ→ 의심스러운 계정 접근 차단 / 공지 이메일 발송 / 계정 삭제 요청 처리등의 기능을 추가(처음엔 소프트 삭제후, 72시간내에 완전 삭제)

- 예약된 작업 실행
ㅤ→ SaaS에선 다양한 예약작업이 실행 : 고객에 대한 일일 보고서, 15분마다 사용 통계 계산, 직원들에게 보내는 지표 이메일 등
ㅤ→ Celery 워커 몇개와 Celery beat 스케줄러를 클러스터내에서 실행중. Redis를 태스크 큐로 사용
ㅤ→ 예약된 작업이 제대로 실행되지 않을때 SMS/Slack/Email 등으로 공지 받기 위해 HealthChecks.io 를 사용

- App Configuration
ㅤ→ 모든 설정은 환경변수를 이용. 구식이지만 이식 가능하고 잘 지원됨

- Keeping Secrets
ㅤ→ kubeseal 을 이용. 비대칭 암호화를 사용해서 Secret들을 암호화함. 암호 해독 키에 접근할 권한이 있는 클러스터만 암호 해독 가능
ㅤ→ 클러스터내의 Secret 들을 보호하기 위해 AWS KMS의 암호화 키를 이용

- 관계형 데이터 : Postgres
ㅤ→ 실험들을 위해 클러스터내에서 바닐라 Postgres 컨테이너를 운영하고, K8s Cronjob 으로 S3에 매일 백업을 수행
ㅤ→ 프로젝트가 성장하면 데이터베이스를 클러스터 내에서 RDS로 옮기고, AWS가 암호화된 백업 및 보안 업데이트등을 처리하게 함
ㅤ→ 보안을 강화하기 위해, AWS의 DB는 Private Network 에서만 접근 가능

- 컬럼 데이터 : ClickHouse
ㅤ→ PanelBear의 분석데이터를 효율적으로 저장하고 실시간 쿼리하기 위해 ClickHouse 를 사용
ㅤ→ 훌륭한 Columnar 데이터 베이스로, 엄청 빠르고 구조만 잘 잡으면 높은 압축률을 보임(스토리지 감소 = 수익 증가)
ㅤ→ K8s 클러스터내에서 ClickHouse 인스턴스를 자체 호스팅
ㅤ→ S3에 Columnar 데이터를 주기적으로 백업하는 CronJob 생성
ㅤ→ 재해시 S3에서 데이터를 수동으로 백업하고 복원하는 몇개의 스크립트

- DNS기반 서비스 디스커버리
ㅤ→ K8s 가 클러스터내의 DNS 레코드를 자동으로 관리해서 트래픽을 해당 서비스로 라우팅
ㅤ→ 오토스케일링중에도 건강한 pod 들과 연결되도록 자동으로 DNS 레코드를 동기화

- Version-Controlled Infrastructure
ㅤ→ Docker, Terraform, K8s manifest 를 단일 저장소(Infra Mono-Repo)에서 관리
ㅤ→ 간단한 명령으로 인프라 생성 및 삭제가 가능하고 버전 관리를 통해 재현가능

- Cloud Resource를 위한 Terraform
ㅤ→ 대부분의 클라우드 리소스는 Terraform 으로 관리
ㅤ→ 이를 통해 인프라 자원과 설정을 문서화 하고 추적이 가능

- App 배포를 위한 K8s manifest
ㅤ→ 인프라 모노 레포의 YAML 파일에 K8s Manifest 가 적혀있음
ㅤ→ cluster 와 apps 두개의 폴더로 분할
ㅤ→ cluster 에는 nginx-ingress, 암호화된 secret들, Prometheus 스크래퍼 처럼 클러스터 전체 서비스 관련 설정을 포함
ㅤ→ apps 에는 프로젝트당 하나의 네임스페이스에 정보들 저장

- 구독 및 결제
ㅤ→ Stripe Checkout 을 이용해서 모든 결제 처리
ㅤ→ 결제 정보 자체에 관여할 필요 없어서 제품에 집중 가능
ㅤ→ 고객 세션 만들고 Stripe의 페이지로 리디렉션 한뒤 WebHook 으로 결과받으면 끝

- Logging
ㅤ→ 로깅 에이전트를 쓰지 않고 간단히 stdout 에 로그출력하면 k8s 가 자동으로 로그를 수집하고 rotate도 수행
ㅤ→ FluentBit 등을 통해서 Elasticsearch/Kibana 등으로 보낼수 있겠지만, 간단히 유지하기 위해 아직은 하지 않음
ㅤ→ 로그 검사를 위해서는 CLI 도구인 stern 사용

- 모니터링 및 경고
ㅤ→ 처음에는 Prometheus / Grafana 를 자체호스팅 했지만, 클러스터 문제 발생시 경고시스템도 같이 중단 되어서 불편
ㅤ→ 그래서 New Relic 으로 변경
ㅤ→ 모든 서비스에는 자동으로 지표를 수집하고 Datadog, New Relic, Grafana Cloud 등으로 보낼수 있는 Prometheus Integration 이 있어서, New Relic 으로 이관시 그들이 제공하는 Prometheus Docker 이미지를 사용하는 것만으로 가능

- 오류 추적
ㅤ→ Sentry 를 이용해서 애플리케이션 오류를 수집
ㅤ→ Slack #alerts 채널을 이용해서 downtime, cron job failures, security alerts, performance regressions, application exceptions 등 모든 경고를 중앙 집중화

- Profiling 및 다른 좋은 것들
ㅤ→ 심층 분석이 필요할때는 cProfile 이나 snakeviz 같은 도구를 사용
ㅤ→ 로컬 머신에서는 Django Debug Toolbar 이용

저는 국내에도 자기 서비스로 돈을 버는 1인 개발자 또는 소규모 팀들이 더 많이 나왔으면 합니다.
여기 긱뉴스는 그런 서비스들이 자신을 알리고, 건전한 피드백을 받는 공간으로 성장했으면 좋겠어요.

- 1인 SaaS 스타트업 6개월 운영 회고 https://news.hada.io/topic?id=2415
- 최소한의 노력으로 소프트웨어 스타트업 운영하기 https://news.hada.io/topic?id=1534
- 2021년 독립 SaaS의 현황 보고서 [63p 슬라이드] https://news.hada.io/topic?id=3728
- 1조 회사를 만들다 실패한 경험 이야기 https://news.hada.io/topic?id=2
- 저는 인터넷에서 양파를 팝니다 https://news.hada.io/topic?id=3
- 삼성출신 스타트업 대표가 12억 날리며 깨달은 것 https://news.hada.io/topic?id=3015
- 스타트업을 년6$로 운영하기 https://news.hada.io/topic?id=1621

 
무료 포토샵 Photopea 개발자의 AMA

- PSD를 웹에서 편집 가능한 툴
- 1.8M 짜리 오프라인 도구. 년 $50 짜리 파일 호스팅 이용
- 수익은 광고 : 1시간 사용하는 사람당 약 5센트 수익
ㅤ→ 2019년 기준 5백만시간이라서 약 $25만불(2.8억원) 수익이 났고, 2020년에는 2~4배 예상
- 체코 프라하에 사는 29살 개발자 혼자 개발중
- 2012년부터 취미로 개발 시작, 2017년에 광고 붙인후 월 $400씩 수익 발생, 매년 사용자가 두배씩 늘어 나는 중

* AMA : Ask Me Anything
* 이 글이 올라온 IAmA는 2천만명의 멤버를 가진 엄청 큰 서브레딧

Photopea - 웹 기반 PSD 이미지 에디터 https://news.hada.io/topic?id=534
ㅤ→ PSD/XCF/Sketch/CDR 등 유명 이미지 에디터의 파일 오픈 가능
ㅤ→ 레이어/레이어 마스크/블렌딩/브러쉬 등을 지원

실행해보시면 우측에 광고가 4개 뜹니다. 그거 광고만으로 년 3억씩 벌고 있군요.

I am using www.hostingsolutions.cz . They repied to me and said that they are ok with it. I should have an unlimited traffic at my webhosting.

호스팅 업체가 말도 안되게 편의를 바주고 있었네요.

 
DeepHN - 해커뉴스 3천만개 링크의 Full-Text 검색 도구

- HN에 올라온 3천만개 포스트의 내용과 댓글, 외부 URL 내용을 통합해서 실시간 검색
- 실시간 프리뷰
- 검색어 자동 보정/제안
- 키워드 하이라이팅
- 불린 검색 : AND,NOT,PHRASE,Implicit PHRASE
* 검색 SaaS인 SeekStorm 으로 개발

SeekStorm ( https://seekstorm.com/ ) 이 자신들의 SaaS 홍보용으로 만든 거네요.
HN의 기본 검색은 YC에서 투자한 (YC W14) 검색 SaaS인 Algolia ( https://www.algolia.com/ )를 이용중입니다.

국내에서도 검색 SaaS가 나온다면 GeekNews 데이터를 함 이용해 보시면 어떨까 합니다 ㅎㅎ

SeekStorm 이 쓰는 일부 기능은 오픈소스로 공개했네요.
- 철자 교정 및 퍼지 검색 오픈소스 SymSpell : https://github.com/wolfgarbe/SymSpell
- 1000배 빠른 Radix trie 및 자동 완성 오픈소스 PruningRadixTrie : https://github.com/wolfgarbe/PruningRadixTrie

SaaS를 만들고, 자신들의 SaaS로 사람들이 쓰기에 좋은 뭔가를 샘플로 개발해주고, 그리고 일부는 오픈소스로 공개하고..
이게 SaaS 서비스가 성장하는 기본 프로세스 인듯.

TypeSense 도 비슷한 방식을 썼죠. 검색은 오픈소스이지만, 클라우드 버전 SaaS는 유료입니다.

- typesense - 오픈소스 검색 엔진 https://news.hada.io/topic?id=3369
- typesense로 만든 2백만개 음식 레시피 검색 엔진 https://news.hada.io/topic?id=3370

 
월요일이 즐거운 PM,PO,기획자 [브런치북]

SAP에서 개발자 및 프로그램/프로덕트 매니저를 오래하신 김영욱님의 글 모음

챕터1 - 그동안 헷갈리셨던 것, 오늘로 끝내 드릴게요.
01. 프로덕트, 프로그램, 프로젝트 매니저? 뭐가 다른가요?
02. POC,Prototype, MVP를 구별하여 사용해요!
03. 애자일-디자인씽킹-린 스타트업, 이거 정말 좋은건가요?
04. 평가방법 OKR, KPI, MBO 뭐가 다른거에요?

챕터2 - 좋은PM의 수첩을 살짝 보여 드릴게요.
05. <프로덕트 리더십> 팀의 역할은 무엇인가?
06. <프로덕트 매니저>의 '생각의 틀'과 '방법의 툴'
07. 코로나 시대의 프로덕트 매니지먼트는 어떻게 달라지는가?

챕터3 - 좋은 PM이 되어봐요. 어렵지 않아요!
08. 좋은 PM을 위한 MVP 프라이머
09. 좋은PM은 '허세 지표/메트릭'을 사용하지 않습니다.
10. PM수첩: 꼭 알아야 할 4가지 우선 순위 정하기 기법
11. 좋은 PM이라면 늘 주의해야 할 4가지 의사결정 편향

챕터4 - 좋은 PM은 자상한 엄마 역할도 해요.
12. 개발자와 PM이 (매우) 사이좋게 잘 지내는 방법
13. 개발자와 디자이너가 (매우) 사이좋게 잘 지내는 방법
14. 현재 <개발자>인데 "프로덕트매니저"가 되고 싶다구요?

챕터5 - 좋은 PM은 매일 매일 발전해요!
15. 좋은PM에게 '영혼의 닭고기 수프'와 같은 10권의 책
16. 좋은 PM은 "현재 진행 학습형"이다.

 
웹 최적화 방식 모음

CSS/JS 파일 위치같은 기초부터 낙관적 UI와 같은 UX트릭까지 다양한 방식을 다룹니다.
풍부한 링크들로 된 레퍼런스도 특징

- 0. 전반적 원칙과 원리
- 1. 다운로드
- 2. 파싱 및 렌더링 트리
- 3. Layout 및 렌더링
- 3.3 UX 트릭
- 4. 로드 후

 
Waterfaller - 웹사이트의 느린 부분 찾아서 빠르게 하기

- 구글 Pagespeed Insights와 비슷
ㅤ→ 같은 정보를 사용하지만, 가장 중요한 문제를 확인하기 위한 전문가 분석 알고리즘을 추가
- 전체 페이지 로딩을 시각화
ㅤ→ Core Web Vitals 확인하고 빠르게 만드는 것을 목표
ㅤ→ 각 항목당 정보 및 느린 속도에 대한 해결책들을 제시

 
n8n - 오픈소스 워크플로우 자동화 솔루션

- 150개 이상의 앱과 연동
- Zapier, IFTTT처럼 No-Code 플로우 작성 및 운용
- 조건부 로직, HTTP 리퀘스트, JS 함수를 사용하여 확장 가능
- CLI 혹은 Docker로 빠른 시작 (npx n8n, Docker Hub: n8nio/n8n)

 
Awesome Web Effect - 웹페이지 효과 모음

- 배경 꾸미기
- 마우스 효과
- CSS 3D 효과
- 이미지 효과
- 입력 효과
- 트랜지션 효과
- Rain & Snow
- 버튼 효과
- 로딩 효과
- 오디오 효과
- WebCam 효과
- SVG Animation
- 불꽃놀이
- 그외

 
리눅스 사용에 도움주는 한국어 커뮤니티 사이트

국내 리눅스 커뮤니티를 잘 정리한 페이지 공유합니다.
글쓴이가 만든 모바일 앱도 마지막에 소개하네요.

* 한국 리눅스 문서화 프로젝트 (커뮤니티)
* https://kldp.org/
* 하모니카OS
* http://hamonikr.org/Free_Board
* 우분투 코리아 (커뮤니티)
* https://www.ubuntu-kr.org/
* 리눅스민트 코리아 (커뮤니티)
* http://linuxmint.kr/
* 넘버원 리눅스 (데스크탑 배포판)
* http://www.no1linux.org/
* 안녕 리눅스 (서버 배포판)
* https://annyung.oops.org/
* 수리눅스 (서버 배포판)
* https://www.sulinux.net/web/
* 한국 데비안 사용자 모임
* https://debianusers.or.kr/
* 리눅스포털
* http://linux.co.kr/home2/board/…
* 리눅스 Q&A
* http://board.theko.co.kr/bbs/group.php?gr_id=G01
* 클리앙 리눅스당
* http://www.clien.net/service/board/cm_linux

 
요즘 프로그래머를 위한 코볼 배우기

- COBOL을 익히기 어려운건 대부분의 자료가 레퍼런스 매뉴얼만 있기 때문
ㅤ→ 기본 구조를 간단히 설명하고, 익히기 위한 자료들을 정리한 글
- COmmon Business Oriented Language
ㅤ→ 비즈니스용 DSL : 레코드 단위로 처리. 즉, Java 보다는 SQL 부류에 가까움
ㅤ→ 읽기 쉬운 것을 목표로 만들어서 평범한 영단어를 사용. (예를 들어 국세청 직원이 새로운 세법을 구현할 수 있도록)
ㅤ→ COBOL을 배우는 것은 단지 시작일 뿐임. 제대로 COBOL을 하려면 메인프레임 조작까지 배워야 함

- 프로그램 구조
ㅤ→ divisions, sections, paragraphs, sentences, statements 및 글자들로 구성
ㅤ→ 컬럼에 대해서는 엄격한 룰이 있음
ㅤㅤ· 1~6 : 라인넘버
ㅤㅤ· 7 : "*"는 코멘트, "-"는 앞줄에 연결, "/"는 Form Feed
ㅤㅤ· 8~11 : COBOL divisions, sections, paragraphs 등을 지정
ㅤㅤ· 12~72 : COBOL statements
ㅤㅤ· 73~80 : 프로그래머 사용 가능 공간
ㅤ→ 하지만, 요즘의 코볼은 Indentation 무시하고 프리 포맷도 잘 지원함
ㅤ→ 또한 최신 코볼 IDE(OpenCobolIDE)에선 알아서 잘 지원하고 신택스 컬러링도 가능
ㅤ→ 이게 필요했던 이유는 천공카드에서 코드를 읽어서 처리했기 때문

- Hello World 실행하기 (GnuCOBOL)

* 여기까지만 오면 기본적으로 다른 언어처럼 COBOL 배우기 가능
ㅤ→ Derek Vanas의 2시간짜리 유튜브 강의가 가장 훌륭 : https://www.youtube.com/watch?v=TBs7HXI76yU

- 코볼의 훌륭한 점
ㅤ→ 복잡한 레코드 정의가 간편
ㅤ→ 고정 소수점 연산

- COBOL을 익히기 위한 개인 프로젝트로 "개인 회계 시스템" 개발을 추천
ㅤ→ https://plaintextaccounting.org/
ㅤ→ Rust Ledger : https://github.com/ebcrowder/rust_ledger/blob/main/src/ledger.rs

- 그 외의 자료들
ㅤ→ 기초 영상 및 가이드
ㅤ→ 레퍼런스
ㅤ→ Coursera 및 OpenMainframeProject의 COBOL 강의
ㅤ→ 유튜브 채널과 비디오들

 
Yamauchi No.10 Family Office

- 독특한 Isometric 디자인 사이트
- 현재의 닌텐도 신화를 만들어낸 제3대 닌텐도 대표이사 "야마우치 히로시"의 가족들이 그의 정신을 이어받아 운영하는 패밀리 오피스
ㅤ→ 의미나 목적이 없는 자산은 차갑고 생명이 없는 현금일 뿐. 선대가 만든 상당한 재산을 통해 이 자산을 활용하여
ㅤㅤ새로운 아이디어와 기술, 다음 세대에 필요한 비즈니스에 투자하는게 목표
ㅤ→ 자산의 출처를 절대 잊지 않음. 이 모든 자산들은 전세계 어린이,친구,가족들에게 몇시간의 엔터테인먼트를 제공한 제품들에서 나왔음.
ㅤㅤ그 대가로 전세계 어린이들이 우리 사회를 물려받을 때 필요한 물질적 부와 지식과 지혜를 제공해야함
ㅤ→ 투자를 통해 일본에 혁신을 추진하는데 사용. 다양한 투자 스타일을 이용해서 구조적 또는 재정적 문재로 고통받는 기업에 관리 및 금전적 지원을 제공

성공한 사람이 만든 재단이나 패밀리 오피스*는 많겠지만, 닌텐도의 정신을 잘 이어받은 것 같은 홈페이지라 소개해봤습니다.
- 닌텐도 신화 만든 야마우치 히로시 https://www.mk.co.kr/news/economy/view/2010/05/234177/
- 닌텐도의 위대한 독불장군, 야마우치 히로시 https://it.donga.com/27335/

그가 남긴 어록들이 꽤 유명합니다. (망언이라고도 볼 수 있지만, 현재의 닌텐도 모습을 보면..)

"시장조사? 그딴 걸 해서 뭘 하겠다는 겁니까?" "닌텐도는 시장을 창조해가고 있어요. 조사할 필요 따위 전혀 없죠"
"필수품이라면 두 번째라도 싼 쪽이 팔립니다. 하지만 오락은 두 번째여서는 안 됩니다. 제아무리 값이 싸더라도 팔리지 않아요"
"닌텐도가 강한 건 닌텐도가 세계 최강의 소프트웨어 메이커이기 때문이에요."
"21세기에 게임 소프트는 대용량 따위 필요 없다. 그런 인해전술을 요구하는 일을 계속하다가는 게임소프트 회사는 모두 침몰할거다."
"성능만을 추구하는 마이크로소프트는 게임이 소프트웨어를 즐기는 것이라는 본질을 이해하지 못하고 있다."
- 야마우치 회장 어록집 https://blog.daum.net/wowbeing/12793790

* 해커뉴스 의 댓글도 참고하세요 https://news.ycombinator.com/item?id=26803201

* Family Office 는 성공한 가족의 부를 관리하는 비상장 기업을 의미합니다 https://en.wikipedia.org/wiki/Family_office

* 이 사이트는 총 274개의 모델 개체를 사용해서 애니메이션을 픽셀 바이 픽셀, 프레임 바이 프레임으로 설계했다고 하네요.
ㅤ사이트 개발사는 일본의 웹 에이전시인 https://mount.jp/

 
새로운 HTTP SEARCH 메소드

- IETF에 새 Draft로 추가된 SEARCH 메소드 소개
- 복잡한 데이터를 가져오기 위해선 기존 GET/POST 만으로는 비효율적

SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql

SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7

- 실제로 SQL문장이 표준으로 사용되는 건 아니고, 리퀘스트 바디에 검색을 위한 이런 컨텐츠가 가능하다는 것
- 이를 통해서 한개의 URL에 대해서 GET,POST,SEARCH 가 모두 가능해짐
- Accept-Search 헤더를 통해서, 검색에 사용하는 포맷들을 지정 가능 :
ㅤ→ Accept-Search: application/sql, application/graphql
- WebDAV 에 있었던 SEARCH 메소드 표준에 기반 (rfc5323)

용도자체는 SQL을 직접 때리는건 문제가 있고 elasticsearch처럼 semantic하게는 get이지만 HTTP Body를 넣어서 조회하고 싶은 경우에 쓰게 되지 않을까 싶습니다.

 
리눅스 커널에서의 Rust 지원을 위한 RFC

- 커널의 두 번째 언어로 Rust를 사용해야 하는 이유를 정리
- 코어나 주요 커널 하위시스템을 다시 작성하는게 아닌, 드라이버 및 그와 비슷한 "Leaf" 모듈들을 Rust로 작성할 수 있도록 하기 위함

Rust를 리눅스 커널에서 사용하면
- 언어적 속성 때문에 메모리 세이프티 버그, 데이터 경합 및 논리 버그의 위험이 줄어듬
- 메인테이너가 Rust의 안전함 때문에 모듈을 리팩토링하고 패치하는데 더 자신있게 할 수 있음
- 최신 언어 기능 및 상세한 문서화 덕분에 새 드라이버와 모듈을 쉽게 작성 가능
- 더 많은 사람들이 최신 언어를 사용하여 커널개발에 전반적으로 참여 가능

"Why Rust?"
- Linux 커널의 컨텍스트상, C에 비해 몇가지 주요 이점을 제공
ㅤ→ (언어적 장점은 생략..)

"Why not?"
- Linux 커널의 컨텍스트상, C에 비해 이런 단점이 있음
ㅤ→ 컴파일러 플러그인, Sanitizer 등을 포함한 C 기반 툴링에 노력을 기울여왔음. 이건 시간이 지나면서 Rust 사용이 증가하면 개선 될 것
ㅤ→ LLVM 기반의 단일 구현체. GCC 프론트엔드, Cranelift 기반의 'ructc' 백엔드, 부트스트래핑 체인을 줄이기 위한 'mrustc' 와 같은 노력이 진행중
ㅤ→ 아직 표준화 되지 않음. 표준화가 커널에 도움이 될지는 확실하진 않지만..
ㅤ→ 현재 컴파일러의 복잡한 기능과 제한으로 인해서 컴파일 속도가 느림
ㅤ→ 현재로서는 Nightly 빌드에 있는 기능이 필요. 안정 버전을 사용 불가. 1년 내에 이 제한을 없애는걸 목표
ㅤ→ 'core' 및 'alloc' Rust 표준 라이브러리에 있는 기능이 다 사용되지 않아서 현재 필요한 부분보다 큼
- 이러한 단점의 대부분은 Rust 가 아직 젊고 덜 사용되는 언어라는 사실에서 발생
- 지난 수십년 동안 C가 그랬던 것처럼 Rust 가 시스템 프로그래밍의 중요한 부분이 될 것이라고 믿고 있음

이 RFC에 대해서 Linus Torvalds옹이 답변을 달았습니다 https://lkml.org/lkml/2021/4/14/1099
"So I replied with my reactions to a couple of the individual patches, but on the whole I don't hate it."
전반적으로는 싫어하지 않는다고 하셔서 잘 흘러가지 않을까 기대해봅니다.

검색해 보니 긱뉴스에 Rust 관련 뉴스가 정말 많이 올라왔었네요. 이젠 정말 시대의 대세라고 봅니다.
- https://news.hada.io/search?q=Rust

- Rust 프로그래밍 언어 [한국어판] https://news.hada.io/topic?id=1152
- Rust - 높은 성능와 신뢰를 확보하기 위한 언어 '러스트의 멋짐을 모르는 당신은 불쌍해요' https://news.hada.io/topic?id=991

점진적으로 C와 공존하다가, 어느순간 대체되어있지 않을까... 라는 생각을 품어봅니다. 오히려 모질라로부터 독립한 게 더 좋은 선택이었던 것 같기도 해요.

 
vgpu_unlock - NVIDIA 일반 그래픽 카드에 vGPU 기능 사용하기

- NVIDIA Tesla GPU 에서만 지원되는 vGPU 기능을 Geforce 및 Quadro GPU에서 지원하도록 열어주는 코드
ㅤ→ 실제로는 같은 칩이지만, 소프트웨어 제한만 되어있는데 이걸 해제
ㅤ→ PCI Vendor ID를 바꿔서 속이는 방식
- Python3 + frida + dkms + NVidia GRID vGPU 드라이버 필요
- 지원하는 그래픽 카드와 대체되는 Tesla 카드 모델
ㅤ→ TITAN X/XP, GTX 1080 Ti, Quadro P6000 = Tesla P40
ㅤ→ GTX 1080/1070/1070 Ti/1060 6GB/1060 3GB , Quadro P5000 = Tesla P4
ㅤ→ TITAN RTX, RTX 2080 Ti, Quadro RTX 6000
ㅤ→ RTX 2080 Super/2080/2070 Super/2080 Rev. A/2060, Quadro RTX 5000/4000 = Tesla T4
ㅤ→ RTX 3090/3080 Ti/3080, RTX A40
ㅤ→ 해당 코드 : https://github.com/DualCoder/vgpu_unlock/…

 
Porter - 쿠버네티스 기반 PaaS 오픈소스

- Docker 이미지 배포 가능한 PaaS (K8s + Helm)
- Heroku 와 비슷한 UI로 상태/로그/히스토리 확인
- AWS/GCP/DO 의 K8s 클러스터에 쉽게 배포 가능
- 기존 버전으로 롤백 지원
- DevOps 없이 완전히 사용자 정의 가능한 인프라 구성 가능
- 원클릭 설치가능한 애드온 마켓플레이스 (MongoDB, Redis, PostgreSQL 등)

 
MAD (ML,AI,Data) Index - MAD 주가 지수

- 매출의 50% 이상이 ML/AI/Data 기반인 상장된 SaaS/IaaS 회사만 선별해서 뽑은 주가 지수
- 총 13개 회사 : Snowflake, Palantir, Datadog, Splunk, MongoDB, Elastic, C3.ai, Alteryx, Teradata, Cloudera, Talend, Domo, Veritone
ㅤ→ 대부분 모든 회사가 5년내에 상장, 평균/중간값은 2017년
ㅤ→ 가장 오래된 회사는 Teradata(2007), Splunk(2012)
- 3개의 그룹
ㅤ→ 고성장 : 35% YoY, LTM 기업가치/매출이 15배 이하 (C3, Datadog, Palantir, MongoDB, Elastic, Snowflake)
ㅤ→ 중성장 : 10~25% YoY, 매츌 $1B 이하 (Alteryx, Talend, Cloudera, Domo, Veritone)
ㅤ→ Contracting : 연매출 $1.5B 이상, 전년 대비 YoY성장이 느리거나 축소 (Teradata, Splunk)
- 2020년 1월1일을 100으로 봤을때
ㅤ→ 2020/04/01 - 81.56
ㅤ→ 2020/07/01 - 164.63
ㅤ→ 2020/10/01 - 167.24
ㅤ→ 2021/01/01 - 200.03
ㅤ→ 2021/04/01 - 167.56

* MAD Index 에서 제외 : 클라우드/하드웨어 벤더, 버티컬 AI/DATA 회사, AI를 많이 쓰지만 내부/제품에만 쓰는 회사들(Netflix,Facebook등)

 
AWS, ElasticSearch와 Kibana의 포크버전 OpenSearch 공개

- Elastic의 라이센스 변경으로 기존 버전을 포크해서 APL v2 오픈소스로 공개
ㅤ→ OpenSearch : Elasticsearch 7.10.2
ㅤ→ OpenSearch Dashboard : Kibana 7.10.2
- OpenSearch를 사용, 수정, 확장, 포함, 수익 화, 재판매, 제품 및 서비스의 일부로 제공 가능
- 기존 Amazon Elasticsearch Service 의 이름을 Amazon OpenSearch Service 로 바꿀 계획

- AWS가 Elasticsearch와 Kibana의 오픈소스 fork 발표 https://news.hada.io/topic?id=3620
- Elastic, AWS가 사용 못하게 라이센스 변경 https://news.hada.io/topic?id=3606
- ElasticSearch를 둘러싼 AWS와 Elastic의 대립 https://news.hada.io/topic?id=3628

 
인류는 왜 화성에 가려 하는가?

- 우주로 가겠다는 야망
- 야망이 가져다 준 것들
- 화성에 가기 위한 노력의 역사
- 그리고 ‘인내’
- 여전히 현재 진행형
"우리는 저 광활한 우주에 우리 말고도 누군가가 살아 있음을 믿고, 그들을 찾고 있기 때문"
"우리는 어디에서 왔고, 어디로 가고 있나요?"

로버트 주브린(Robert Zubrin) 박사가 “왜 화성으로 가야 하는가?”라는 질문에 답변하는 내용도 들어보면 좋습니다.
https://www.youtube.com/watch?v=j2Mu8qfVb5I
https://firenzedt.com/14980 (한국어 번역)

 
NFT가 도대체 뭐야?

- ‘non-fungible token’의 약자로, ‘대체불가토큰’ 혹은 ‘대체불가능토큰’
ㅤ→ 기존 암호화폐, 귀금속, 채권등은 대체가능(fungible)
ㅤ→ 암호화된 거래내역을 블록체인에 영구적으로 남김으로써 고유성을 보장
ㅤ→ NFT 발행에 현재 가장 널리 사용되는 블록체인 플랫폼은 이더리움
- 왜 화제인가?
- NFT에 대한 우려들
- 단·장기 전망

이쯤에서 보는 NFT(대체불가능토큰)의 약점
https://www.coindeskkorea.com/news/articleView.html?idxno=73064

 
Calendso - 오픈소스 Calendly 대체제

- 팀을 위한 쉽고 투명한 회의/미팅 일정 스케줄링 도구
- Next.js + React + Tailwind + PostgreSQL
- 자유로운 Customization 가능 : Open API, WebHook, 테마 등
- 구글 캘린더 기본 연동
ㅤ→ 다른 캘린더들 연동 예정(아웃룩, 줌, Teams, Zapier, GoToMeeting)

뭔가 미팅이 많은 비즈니스 쪽에서는 Calendly 기능이 참 좋긴 한데,
제공하는 기능 대비 비싼 가격(사용자당 월 $8/$12)이 조금 부담스러웠는데요
이런 오픈소스 출현은 반가운 듯 합니다.

 
NVidia, 고성능 ARM 서버 CPU "Grace" 발표

- 차세대 Arm Neoverse 아키텍쳐 기반
- 대규모 AI시스템용
- 기존 NVIDIA GPU도 딥러닝에 적합하지만, 모든 작업이 GPU로만 처리는 불가능
ㅤ→ 그중 CPU가 필요한 부분을 현재는 AMD EPYC이 채우지만, 그 부분을 대체하기 위한 용도
ㅤ→ CPU-GPU 간 연결을 NVLink 4(900GB/sec)로 구성해서 병목현상 없이 빠르게
ㅤ→ CPU / GPU 를 하나의 보드에서 제공 예정
- 2023년 출시예정

* 미국의 컴퓨터 과학자인 Grace Hopper 이름에서 따옴. 최초의 컴파일러를 개발했고, "Bug" 라는 개념을 만든 분. COBOL의 개발자이기도 함

애플이 하고 있는대로 CPU/GPU를 묶는건 어쩔수 없는 대세인가 보네요

- Apple M1칩은 왜 그렇게 빠를까? https://news.hada.io/topic?id=3315
ㅤ→ 유튜브로 설명 듣기 : https://youtu.be/71LlixEBK0o
- M1은 RISC-V의 상승을 예고한다 https://news.hada.io/topic?id=3447
ㅤ→ 유튜브로 설명 듣기 : https://youtu.be/F5sIQZvlJc8

 
이코노미스트에게 배운 글쓰기 비법

이 글은 'The Economist' 라는 잡지로 배운, 글을 명확하게 쓰는데 도움이 될만한 내용을 소개하는 글인데요. 전문을 읽어보시는 걸 추천드리지만, 어떤 글인지 파악하실 때 도움이 될 것 같아 간단히 요약해봤습니다.

1. 시작때 결론을 내리고 시작하세요. → 이러면 사람들이 이걸 더 볼지, 아니면 흥미 없는 주제라 넘길 수 있을지 글을 끝까지 안 봐도 정할 수 있습니다.

2. 증거가 연속되게 증거를 붙이세요. → 증거 1을 가져오고, 확장하다가 증거 2를 가져오고, 또 확장하다가 증거 3을 가져오면 넓은 방에 흩어진 증거들을 찾느냐 뭔말하는 지 모를겁니다.

3. 첫 문장은 요약하고, 나머지 문장은 설명하세요 → 1번을 일반적인 방법으로 확장한 것입니다.

4. 적절한 단어 사용 → 좋고 나쁨으로 모든 걸 표현하지 말고, '컴파일러가 개발자를 나쁘게 다룬다' 보단 '컴파일러가 개발자를 채찍질한다', '컴파일러는 개발자를 혹사시킨다' 등 이미지가 떠오르는 단어를 고르는 게 상상이 더 구체화됩니다.

5. 과거부터 시작하기 → 모든 사건은 맥락이 있으므로 역사를 알아야 할 때가 있는데, 이 때는 연대기적으로 과거부터 지금까지. 순차적으로 설명하는 게 좋습니다. 갑자기 과거가 나타나면 혼란스러워요.

6. 비트를 넣기 → 말하면서 운율이 느껴지면 좋습니다.

예문이나 예시, 왜 그래야 하는지에 대한 자세한 설명을 보고 싶으시면 전문을 확인해보세요. 'ㅁ '