본문으로 건너뛰기

IELTS Speaking

· 약 2분

공부 방법

  • 녹음
    • 첫 문장 말하기
    • 두 번째 문장 말하기
    • 세 번째 문장 말하기
  • 딕테이션
  • 오답노트, 브레인스토밍
  • 반복, 일주간 매일 5번씩 읽기

Part1

  • Well, 직접적인 답변
  • This is because
  • One reason is that
  • In the case of ~
  • To be specific,
  • What I mean is that
  • For example,
  • In fact,

Do you ever?

  • 습관 질문이라 tend to, tend not to

Part2

  • 키워드, 시제 파악
  • 가이드 질문 확인
  • 1분 노트 테이킹
  • 아이컨택 연습

Part3

  • 1분 타이밍 재고 넘어가면 끊고 아이디어 브레인스토밍
  • Well, I can think of 2 reasons / 2 ways
  • Well, I think there have been many changes

재질문

  • 못 들었어: Sorry, Could you please repeat the question?
  • 빨랐어: Sorry, Could you please slow down a little?
  • 단어를 모르겠어: Sorry, Could you please rephrase the question?

IELTS Writing

· 약 3분

Part1

Format

Map 패턴

be p.p. be 에는 was, has been (now), will be (future)

  • 변경
    • A be replaced by B: 사물은 by 이다.
    • A be converted into B
  • 추가
    • A be built
    • A constructred
    • A developed
  • 파괴
    • A be demolished
  • 잔존
    • remained unchanged
  • 위치 표현
    • next to 건물
    • behind 건물
    • on the north/west/south/east side of 건물,마을,지명
  • 마을
    • the town, the park, the island

Process 패턴

  • 종류, 형태, 수일치, 시제 파악.
  • In the # stage / progess / step / phase.
  • 수동: 가공식품, 제품
    • is p.p. are p.p.
    • cheese, smoked fish, canned fruit, cemment...
  • 능동: 생물, 자연현상: salmon, moth, water, CO2, rock
    • lay eggs -> hatch -> trow into -> migrate

Part2

입장, 근거, 예시, 설명, 정리 5문장만 써, 더 하려하지마.

Types

  • 찬성 또는 반대: Agree / Disagree
  • 두 가지 견해: Both Views
  • 장점과 단점: Advantage & Disadvantage
  • 원인 / 문제점과 해결책: Cause / Problem & Solution
  • 두 가지 과제: Two-part Question

Format

Grammer

  • The number increased ... and the figure reached
    • === , with the figure reaching
    • 다른 목적어를 연결하는 경우
  • The number increased ... and it reached
    • === , reaching
    • 같은 주어를 연결하는 경우

기술사 - IT경영

· 약 12분

BITA, PDCA, 이사회와 경영진

IT경영 기본

IT기획 및 조직화

Computer paradox

  • 컴퓨터 성능의 발달 대비 상대적으로 느린 경제전반의 생산성, 명백산 상반성을 할하며, 개인회사와 특정 응용프로그램에 있어서도 마찬가지이다.
  • Productivity paradox: 컴퓨터 시대라는 것을 어느 곳에서나 볼 수 있지만 생산성 통계에서만큼은 아니다. (Robert Solow)
    • 의미 있는 경제적 센스 측면에서는 어떠한 곳에서도 컴퓨터를 볼 수 없다.
    • 컴퓨터를 볼 수 있는 대부분의 산업분야에서는 겨로가가 엉망인 것으로 측정된다.

CIO

  • Chief Information Officer

IT Governance

COBIT

  • Control Objectives for Information and Related Technologies

ISO 38500

IT BSC

  • IT Balanced Score Card

IT portfolio

IT 투자평가기법

ISP

  • Information Strategy Planning

EA

  • Enterprise Architecture

ISMP

  • Information SYstem Master Plan

IT도입

  • System Integration

ISO 12207

PMBOK

  • Project Mangement Body of knowledge

PRINCE2

  • Project In Controlled Environment

CMMI

  • Capability Maturity Model Integration

IT운영

  • System Management

ITSM

  • IT Service Management

ISO 20000

ITIL

  • ITIL V2
  • ITIL V3
  • ITIL V4

IT경영 응용

IT아웃소싱

  • 요즘엔 클라우드가 일종의 자원 아웃소싱 예시
  • 기대효과: 비용절감, 핵심역량집중 (비용구조의 유동성 확보, 시장대응속도향상, 자산보존, 품질향상, 혁신)
  • 위험요소: 숨은 비용, 불가능한 계약취소, 계약 관리 및 경험결여, IT운영통치권 상실

아웃소싱 유형

  • Total ITO: 전체를 아웃소싱
  • Selective ITO: 일부를 아웃소싱
  • 결합형
    • SI + ITO: 시스템 통합(SI) 후 운영 아웃소싱
    • Consulting + ITO: 전사적인 IT 계획수립을 위한 컨설팅 및 아웃소싱
    • BPO + ITO: 회계, 인사 등의 특정 업무 자체를 이관하고 관련된 ITO 수행
  • 사업형태
    • 자사 단독인수
    • Joint Venture: 아웃소싱 서비스 회사와 고객이 지분을 공유하는 Joint Venture 설립

아웃소싱 절차

  • 타당성분석
  • 사전조사
  • 사업자선정
  • 협상 및 계약
    • Due Diligence: 기업 실사
  • 전환 및 계약관리

e-SCM

  • e-Sourcing Capability Model
  • 서비스 제공의 핵심 구성 요소 또는 서비스 제공의 수단으로 정보 기술 사용

eSCM-SP

eSCM-SP

  • eSCM Service Provider: 84개 프랙티스
  • 목적
    • 서비스 제공자의 평가
    • 서비스 제공자의 개선
    • 경쟁적 차별화
  • 차원구성
    • Sourcing life-cycle: 소싱 생명주기
    • Capability areas: 능력 영역
      • 반복적인 역량과 일회성인 역량으로 나눠져있다.
    • Capability Levels: 능력 레벨
  • 역량단계
구분Level 2Level 3Level 4
명칭지속적인 요구사항 충족조직 성과 관리선행적 가치 향상
고객의 이점요구사항이 일관성있게 이해되고 충족서비스 제공자의 규모의 경제 및 조직적인 개선을 활용서비스 제공자의 혁신 및 업계 선두로 활용
조직의 이점고객과 함께 성장하여 업무 목표 달성
고객의 요구사항이 성공의 기준
전체 업무의 성과를 측정하고 최적화하여 조직 목표 달성체계적인 혁신 및 업계와의 비교를 통한 성과 측정
최적화 프로그램을 통해 조직의 목표 달성

발주관리

  • SW 사업 발주·관리 표준 프로세스 프레임워크: 소프트웨어 도입을 위한 전체 수명주기 과정 중 일련의 기본적인 프로세스·활동·작업을 규정한 상위 수준의 틀로 핵심, 지원, 조직 수명주기 프로세스 등으로 구성.
    • ISO12207을 많이 참조했다.

SLM

  • Service Level Management
    • SLA와 관련 활동들의 반복적 사이클로 지속적 개선을 통한 서비스 수준의 제고를 지향
    • 제약요인: 아웃소싱 이후에도 여전히 비용 및 서비스 품질 경쟁력 측면에서 많은 이슈 발생
  • SOW: Statement of Work, Scope of Work, 업무 기술서
    • 서비스 공급자가 고객에 제공하는 서비스 내역 및 서비스 환경에 대해 정의한 문서 (할 일)

SLA

  • Service Level Agreement
    • IT서비스의 수준을 정량적으로 측정하여 서비스 성과를 평과하고, 그 결과로 서비스 수준을 지속적으로 개선하기 위한 서비스 성과 관리 방식에 관한 계약서
  • 특징
    • 고객과 서비스 제공 업체 간의 커뮤니케이션 도구
    • 분쟁 예방 도구
  • 적용대상
    • Internal SLA: Business Users <-> IT department
    • External SLA: IT <-> Service Provider <--Underpinning Contracts--> Solution Providers

IT Compliance

  • IT관점의 기업투명성, 위험관리 제고
  • 등장배경: 회계책임 부과 대처 위한 IT시스템 필요, 각종 규제강화로 인한 대처 필요
  • 개념: 기업 투명성 강화, 위험관리 강화 및 정부, 관련기관의 권고안, 규제법안의 요건 충족을 위해 IT관점 시스템, 프로세스 정비 활동
  • 주요유형
    • 기업투명성 관련: IFRS, 국제회계기준
    • 정보보호 및 보안 관련:
      • GLBA: Gramm-Leach-Bliley-Act, 금융서비스 현대화 법률, 고객보호, 보안, 백업, 재해관리 규정
      • HIPAA: Health Insurance Portability & Accountability Act, 보험관련 고객정보보호 규정
    • 기업업무 연속성 관련: 금감원지침, 국내 금융권 재해복구 지침
    • 환경 관련: RoHS, WEEE
  • 대응방안
    • 기업투명성 관련: 금융권 운용리스크관리시스템, ARM (Asset Risk Mgt), FAD (Fraud Auto Detection), 보고서 내부 통제시스템, 경영인증시스템
    • 정보보호: ISMS (Information Security Management System), 관물기, ILM (Information Lifecycle Management), DRM (Digital Right Management)
    • 업무연속성: BCP (Business Continuity Planning), DR (Disaster Recovery)
    • 환경관련: 유해물질 검수, 유통 관리시스템 구축

CSR

  • Corporate Social Responsibility, 기업의 사회적 책임
  • 요즘은 ESG 로 바뀜
  • 기업의 사회적 영향력이 커지면서, 경제적/법적/윤리적/자선적 책임을 포괄하는 개념으로 범위가 확장
단계책임예시
4단계자선적책임소외계층 및 교육·문화 지원
3단계윤리적책임환경·윤리경영, 고용다향성
2단계법적책임회계투명성, 제품안전
1단계경제적책임이윤극대화, 고용확대
  • 윤리적 소비자: 소비자가 환경과 사회에 미치는 영향을 고려하여, 바람직한 방향으로 소비
    • 공정무역, 1인미디어의 발달, SNS에 응징
  • 분야:
    • 환경경영
    • 정도경영
    • 사회공헌

ESG

  • Environmental · Social · Governance, 기업의 비재무적 요소인 환경, 사회, 지배구조.
  • 기업이 환경, 사회적 책임을 고려하고, 지배구조를 개선해야 재무적인 위험을 줄이고 지속가능한 발전이 가능하다는 철학
  • 투자자에게 기업의 비재무성과(지속가능보고서, 이사회보고서)를 커뮤니케이션하는 프레임이자 틀.
  • 특징:
    • 명확한 타겟
    • 거버넌스, 성과관리체계
    • 공시, 커뮤니케이션
    • 측정, 평가를 통한 성과의 입증
    • 균형 잡힌 지표, 관리체계
    • Value Chain 상의 더 큰 책임
    • 차별화, 경쟁력 포인트
  • 필요성: 소비자의 인식 변화, 정부의 정책 규제, ESG금융
  • 평가 종류 및 체계:
    • 플랫폼 기반, 공시정보 기반으로 나뉜다.
    • 공시정보 기반인 MSCI (Morgan Stanley Capital International Index) 평가가 유명

ESG 택소노미

  • Taxonomy: 분류체계 (분류 + 법과학)
  • 녹색금융의 기준, 그린워싱을 방지하는 기준을 제공
  • 금융기관, 투자자, 정책입안자 등이 활용

SAM

  • Software Asset Management
      Best Practice                                    Standard
+------------------- IT Service Management --------------------------+
| ITIL ISO/IEC 20000 |
| +----------------- IT Asset Management --------------------------+ |
| | +------------ Software Asset Management ---------------------+ | |
| | | ITIL SAM ISO/IEC 19770-1 | | |
| | | +-------------- License Management ----------------------+ | | |
| | | | | | | |
| | | +--------------------------------------------------------+ | | |
| | +------------------------------------------------------------+ | |
| +----------------------------------------------------------------+ |
+--------------------------------------------------------------------+
  • 프로그램 리스트 모니터링 -> 라이센스 불법 확인 -> 수요 조사 -> 자산관리

경영 전략

참조

정보통신분야 기술사 훑어보기

· 약 10분

종류

  • 정보관리기술사: Professional Engineer Information Management
    • 기존 정보처리기술사
    • 합격률 2022 5.2% 2021 8.8% 2020 7.1%
  • 컴퓨터시스템응용기술사: Professional Engineer Computer System Application
    • 기존 전자계산조직응용기술사
    • 합격률 2022 12.5% 2021 11.9% 2020 18%
  • 네트워크, 클라우드, 시스템 엔지니어면 컴퓨터시스템응용기술사, 나머진 정보관리기술사로.
  • 기술사법으로 관리된다.

시험 관련

출제경향

  • 60%는 거의 그대로 출제, 나머지 20%는 비슷한 유형 출제
  • 총 80%가 기출 변형
  • 시험관이 그때 그때마다 차출되고 해당 시점에 내고 싶은 문제를 내기 때문에 범위 예상이 힘들다.
  • 기술 트랜드나 IT정책을 팔로잉하고 있어야한다.

준비물

  • 1.6mm 펜 4자루 이상: 큰 글씨 선호
    • 파일럿, 빅 볼펜이 볼펜똥이 안나옴.
    • Pilot Super Grip G
    • BIC Cristal
    • Dong-A AnyBall
    • Zebra Tapli Clip
  • 모양자: 플로우차트 그리는데 필요

출제위원

  • 출제위원은 3명, 그 답안을 가지고 다른 사람 3명이 체점을 한다.
  • 1교시 문제를 받자마자 교수, SI기술사, 공무원기술사일지 파악해야한다.
    • 교수: 학구적 스타일
    • SI기술사: 프로젝트를 해봤는데 이슈있는 스타일
    • 공무원기술사: 공공, 법 스타일
  • 이걸 파악해서 연관된 서브노트를 쉬는 시간에 본다.
    • 평소 5년치 분석할 때에도 이런 관점에서 분석해야한다.

느낌

  • 회사에서 했었던 업무들에 대한 프레임워크들을 문서로 리뷰하는 느낌이였다.
  • 이 시험은 기사처럼 암기로 되는 시험이 아니다. IT기법이 왜 그렇게 발전해왔는지, 그걸로 기업의 비지니스에 IT가 어떻게 기여했는지 산업 전반을 이해해야 답을 할 수 있다.
  • 라이팅 문제처럼 에세이를 써야하고, 면접을 대비하는 것처럼 나만의 답안들을 만들어야한다.
  • 장기 말에서 장기를 두는 사람을 만드는 시험이랄까.. 중인 중에서는 제일 높은 관직이지 않을까..
  • 사람들을 설득하는 포지션이기에 질문에 대한 답변을 말로, 손으로, 다이어그램으로 설명할 수 있게 많이 연습해야할 것 같다.
  • 손으로 작성하는게 생각보다 쉽지 않다.
  • 시험의 70%가 공공 분야와 관련이 있다.
  • KoreaScience의 자료가 좋다.

과정

  • 1,000 시간을 투자하면 얼추 합격한다고 한다. 9시간 투자시 4달, 보통 빨라야 6달이 걸린다.
  • 토픽마다 컴포넌트 맵을 작성해야한다.
    • 정의, 필요성/목적, 배경/특징/주요 유형, 개념구성/기술구성 그림, 개념구성/기술구성 내용, 구현절차/방법론, 비교 사례/활성화/전략, 구현절차/방법론, 기대효과/발전제언
    • 토픽 이론 학습
  • 서브노트를 안 쓰고 합격한 사람은 없다.
  • 합격한 사람의 한 달 전 서브노트로 쓰는게 좋다.
  • 한 번 포맷이 머리 속에 있으면 모든 주제에 대해 해당 포맷을 사용할 수 있다.
  • 아는 걸 쓰지말고 물어본 걸 써라. 이건 목차를 잘 만들어야한다.
  • 이해한 걸 중심으로 서브노트를 만들고, 1시간마다 8회 반복하면 6개월 이상 암기된다. 외우는 범위를 형광펜을 칠하며 줄여간다.
  • 10가지 과목 중에 6개는 80%, 4개는 20%의 에너지로 공부해야한다. 그 중 2개는 강의할 정도로 들여다봐야한다.
  • 매번 나오는 것들, 공학적인 기본기는 반드시 알아야한다. 거져주는 문제들이고, 1년에 3번 중 한 번은 이런 문제들을 잡을 기회가 온다.

국제기술사

  • 기술사상호인정 협정(MRA) 따라 가능하긴한데 미국은 1년간 미국 근무 경력 또는 비슷한 경력를 요구하여 실질적으로 전환하는 케이스는 드물다.
  • 국제 기술사는 컴퓨터 관련 과를 졸업해야만 인정이 가능하다.

공부방법

5W1H 개념, 배경, 특징, 방향 나열한 것을 묶는 연습 -> 다시 늘리는 연습 자크만 프레임워크 / 싸이클론 모델

  1. 개념적 What: 무엇인가 핵심, 원리, 가치, 결어 (기술, 서비스, 절차 중 하나)
  2. Why: 왜 필요한가
  3. 구체적 What: 세부구성은 무엇인가 아키텍쳐, 구성도 (개념도), 구성요소 (소스, 매커니즘, 결과)
  4. How: 어떻게 구현하는가 Provider, Consumer 관점, 이전에는 뭐가 있었는지
  5. Who: 누가 찾고, 활용하는가
  6. 결론: 향후방안, 예상 이슈, 발전 방향

예시: ML

  • 개념적 What
    • 핵심
      • 기계
      • 학습
        • 지도
        • 비지도
        • 강화
      • 데이터
    • 원리: 기계가 많은 데이터를 지도, 비지도, 강화학습을 통해 학습하여
    • 가치: 사람 대신 판단하여 의사결정을 지원하는
    • 결어: 기술
  • Why
    • 비용절감
    • 자동화
    • 편의성 (의사결정)
      • 생산성 증가
      • 품질 증가
  • 구체적 What
    • 아키텍쳐
      • 학습데이터 -> 지도/비지도/강화 -> 대시보드, 자동화도구
  • How
    • 동작원리
    • 절차
    • 적용방법
  • Who
    • 개인 Personal Assistant
    • 기업
      • 의사결정
      • 고객관리
      • 마케팅
      • 생산
    • 공공 서비스
      • 교통
      • 안전
      • 환경
  • 향후방향
    • 예상이슈
      • 편향적 판단
      • 적대적 공격
      • 검증
    • 발전방향

예시: 개념도

입력(사용자) / 프로세싱(플랫폼, 기술) / 출력(서비스)
<---------><------------------><--------->

자크만 프레임워크

-경영진관리자/직원개발자/고객운영자/통제자
누가----
언제----
어디서----
무엇을----
어떻게----

싸이클론 모델

RTE 를 만들기 위한 비지니스 + 기술 리더의 자세로 토픽을 고민해야한다.

cyclone-model

  • Lead: 기술사
  • Manage: 관리자
  • Operation: 개발자

토픽별 전략

보안 토픽

  • 리스크 -> 결과 -> 더 많은 대응책
  • ISMS 목차를 외우면 대부분의 보안문제를 풀 수 있다.

거버넌스 토픽

  • 전략 -> 가치 -> 위험 -> 자원관리 -> 성과관리

융합IT 토픽

  • 원칙 문제들은 나의 의견과 응용 포인트를 결론에다가 달아줘야한다.
    • 국가: 법 제도 정비
    • 서비스제공자: 개선 포인트
    • 사용자: 자세, 기준
  • IaaS / SaaS 표준 (+PaaS) / SaaS 간편 / DaaS
    • 코로나 / 재택근무 도입으로 인한 DaaS의 중요성 대두

참조

인천공항의 매직패스, 스마트패스 사용법과 후기

· 약 3분

개요

출국장에서는 체크인, 탑승구, 출국심사, 수하물까지 네 번의 큰 기다림이 있다.

이 중 체크인은 셀프체크인이 지원되는 항공사면 빠르게 건너뛸 수 있지만 나머지는 많은 기다림이 필요하다. 스마트패스 앱을 사용하면 출국장-탑승구의 긴 줄을 건너뛸 수 있다.

단계

집에서 앱을 다운받고 여권을 등록해둔다. 아래 상태가 되면 된다.

탑승권 등록 전

체크인 후

체크인 후 종이 티켓을 받으면 탑승권 등록 > 내 스마트패스 ID > 종이 탑승권의 바코드 스캔에서 바코드를 스캔하면 끝이다.

탑승권 등록하기

탑승구 입장

탑승구로 들어갈 때 바닥에 보면 스마트패스 전용 라인이 있다. 거기에 앱을 인식시키고 얼굴도장 찍고 들어가면 된다. 나는 줄이 아예 없었다. 사람들이 많이 기다리는 줄 뒤에 서있지 말고 탑승구 게이트쪽을 먼저 어슬렁거려보자, 찾기 힘들다면 공항직원에게 물어보자. 스마트패스는 앞으로 가세요 라고 바로 알려준다.

후기

30분 이상 출국장 탑승구 앞에서 기다려야하는게 보통인데, 이 시간을 놀이공원의 매직패스처럼 빠르게 건너뛸 수 있다. 빨리 들어가서 면세점을 둘러볼 수도 있고, 앉아서 쉴 수도 있으니 해외로 나갈 땐 필수인 것 같다.

김포공항에서는 생체정보 인증이 있는데, 그거는 공항애서 미리 해두면 다음 번부터 제주도 갈때 엄청 편해진다.

Refactoring Grammer

· 약 25분

시제

  • 현재: 사실, 반복
  • 현재진행: 동작 강조
  • 과거: 과거에 끝난 것
    • was going to: 하려고 했지만 실제론 하지 않은 일
  • 과거진행: 과거에 뭘 하고 있었는지 강조
  • Used to: 그랬었지~ 해오곤 했었지~ 지금은 안함
  • 현재완료
    • 계속 쭉 해오고 있는 것, for/since
    • 경험 해본적이 있는 것
    • 결과 과거의 행동이 현재와 관련이 있는 것, just/already/yet
  • 미래
    • will: 예측, 결정한 일
    • be going to:
      • 이미 하기로 결정한 미래의 일
      • 현재 상황을 근거로 미래에 일어날 일을 예측할 때
    • 현재진행: 구체적인 계획/약속/예약
    • 현재: 미래 사실로 시간표/일정 상의 일, 주로 사물 주어
    • be about to: 막 ~하려고 하다, 매우 가까운 미래
  • 미래 진행: 미래 특정한 시점에 진행되고 있을 일을 말할 때
  • 미래 완료: 미래의 특정한 시점까지는 어떤 일이 완료되었을 것이라고 말할 때
    • by the time: ~할 때쯤 으로 같이 자주 쓴다.
      • By the time the meeting starts, we won't have prepared the sales report.
      • I'll have learend a lot by the time I complete this course.

현재완료

  • ever: 지금까지 (한 번이라도)
    • Have you ever baked muffins?
  • never: 해본 적이 전혀 없다.
    • I've never baked muffins.
  • have been: 가 본적이 있다.
    • I've been there
    • I haven't been to Paris.
  • has gone: 가고 없다.
  • 경험의 횟수: once, twice, three times, four times, many times.
    • 이럴 때만 times 를 복수로 씀.
  • The best ~ I've ever ~: 지금까지 내가 ~ 해본 최고의 ~
    • That is the best story I've ever heard.
    • It was the best experience I've ever had.

현재완료진행

  • 과거에서 시작해서 지금도 진행 중인 일
  • for, since, how long
    • since: 특정 시점 필요 (since noon, since May, since 5 o'clock)
  • 과거에서 시작해서 진행되어 오다가 방금 전에 끝난일이 지금까지도 영향을 미치고 있을 때
    • Your eyes are red. Have you been crying?
  • 진행으로 못 쓰는 동사들: 동작을 나타내지 않음
    • know, remember, understand, believe, agree
    • want, need, love, like, hate,
    • own, possess, belong, contain
-현재 완료현재 완료 진행
용도1과게에서 시작해서 지금은 끝난 일의 결과 강조과거에서 시작해서 지금까지 진행한 걸 강조
용도2얼마나 많이 또는 몇 번 했는지얼마나 오래 했는지
live, study, work의미 차이 없음의미 차이 없음

미래

  • 시간, 조건 뒤엔 현재가 온다.
  • when, while, before, after, until, if

조동사

  • Can: 동사에 강세
  • Can't: Can't 에 강세
  • Can I: 해도 될까요?
  • Can you: 해줄래요?
    • Could: 능력/허락/가능성/추측
    • was/were able to: 특정 상황에 실제로 성공적으로 어떤 일을 해냈다.
      • Our best player didn't play, but we were able to win the game anyway.
    • have/has been able to ~: 특정 시점 이후로 쭉 할 수 있다.
  • Must: 확실한 추측, 규정, 규칙
  • Have to: ~해야한다
    • don't have to: 할 필요가 없다.
    • didn't have to: 할 필요가 없었다.
    • Did ~ have to
    • will/might have to
  • S should R: R 하는 것이 좋겠다.
  • Should I: 하는 것이 좋을까요?
    • I think ... should
    • I don't think ... should
  • Would you: 해주시겠어요?
  • Would you like N: N를 드릴까요?
  • Would you like to R: R 하실래요?
  • I would like N: N을 주세요.
  • I would like to R: R를 하고 싶어요.

could

  • could belong to S.O.: ~의 것일지도 모른다.
  • could R: ~할지도 모른다.
  • couldn't R: ~할리 없다. (~하는 것이 사실상 불가능하다.)
  • could have p.p.: ~했을지도 모른다. 할 수도 있었지만 하지 않았다.
  • couldn't have p.p.: ~했을 리 없다. (사실상 불가능했음.)
    • She finished all of her work in just one day. She couldn't have done it alone.

might

  • might R: ~할지도 모른다.
  • might not R: ~하지 않을지도 모른다 (그러나 ~할 가능성도 있다)
  • might have p.p.: (과거에) ~했을지도 모른다.
  • might not have p.p.: (과거에) ~하지 않았을지도 모른다. (했을 가능성도 있음)

should

  • should: ~하는 것이 좋겠다.
  • should I/we ~?: ~하는 것이 좋을까요?
  • should have p.p.: (과거에) ~했어야 했다. (그러나 하지 않았다.)
  • shouldn't have p.p.: (과거에) ~하지 말았어야 했다. (그러나 했다.)
  • We should attend: 참석하는 것이 좋지만 반드시 참석해야하는 건 아님
  • All employees must attend: 반드시 참석해야함.

had better

  • you'd better, we'd better: ~하는 것이 좋겠다. (강한 충고)
  • had better not: ~하지 않는 것이 좋겠다.
    • You'd better not sit there.
  • had better: 어떤 일을하지 않으면 좋지 않은 결과가 생길 것
    • Tickets will be sold out soon. You'd better buy some today.
  • should: 반드시 해야하는 건 아니지만 어떤 일을 하는 것이 좋겠다는 의견
    • You should buy those tickets. The seats are closer to the stage.

수동태와 조동사

  • will/can/must + be + p.p.

의문문

  • Which: 제한적으로 주어진 몇 가지 중 선택, 어떤~
  • What: 선택 제한이 없는 경우, 무엇~ 몇~
  • Where ~ from?: ~ 는 어디에서 왔나요?
  • How be동사: ~ 은 어떤가요?
  • How 형용사/부사: 얼마나 ~
  • Be 동사 뒤에 오는 건 보어, 목적어 아님.

What

  • What ~ for?: ~은 무엇을 위한 건가요?, 뭐 때문에 ~하나요?
    • What's this button for?
    • What did you hit me for?
    • What was the cake for?
  • What ~ like?: ~은 어떤가요?
    • What is your boss like?
    • What is it like?
    • What was your first date like?

동명사와 to부정사

  • ~ 는 것, ~ 기
  • 주어는 동명사만
  • Enjoy 는 동명사가 따라옴

동명사만 따라올 수 있는 경우

  • enjoy
  • finish
  • keep
  • mind
  • avoid
  • give up
  • practice
  • suggest

to부정사만 따라올 수 있는 경우

주로 미래: 기대, 소망, 계획, 제안

  • want
  • need
  • hope
  • expect
  • decide
  • plan
  • promise
  • offer
  • choose
  • ask
  • learn
  • refuse

둘 다 오는 경우

  • like
  • love
  • prefer
  • hate
  • start
  • begin
  • continue

의미가 달라지는 경우

  • stop
    • -ing: ~ 하는 것을 멈추다
    • to R: ~ 하려고 하던 걸 멈추다
  • try
    • -ing: 시험삼아 ~ 해보다
    • to R: ~ 하려고 노력하다

사역동사

  • have/make/let + 사람 + R: ~ 가 ~ 하게 하다.
  • help + 사람 + R: ~ 가 ~ 하는 것을 돕다.

to부정사

  • ~ 하기 위해 (in order to R), 추가적으로 덧붙힐 때
  • N + to R: ~ 할 N

U

  • a glass of water
  • music
  • snow
  • sugar
  • air
  • time
  • money
  • news
  • a cup of coffee
  • a loaf of bread

예외

단복수 같은 단어

  • a/some fish
  • a/two sheep
  • a/many deer

항상 복수

두 개의 부분이 모여서 하나의 시물을 이루는 경우

  • pajamas
  • scissors
  • jeans
  • shorts
  • glasses
  • pants
  • headphones

위의 명사의 복수형은 a pair of/two pairs of.

관사

  • a/an: 특별히 정해지지 않은 막연한 사람 또는 사물 하나
  • the: 어떤 사람, 사물을 가리키는지 명확할 때, 특정 사람 또는 사물을 말할 때
    • 어떤 대상에 대해 처음 말할 때는 a/an, 반복할 때는 the
    • I got an e-mail from S.O. The e-mail was about today's meeting.

The

필수

  • 세상에 하나 밖에 없는것: the world, the sun, the moon, the earth
  • 자연환경: the sky, the sea, the ocean
  • 국가/도시 등에 하나 밖에 없는 것: the army, the police, the government
  • 방송, 매체: the radio, the internet
  • 악기를 연주한다고 할 때 악기 이름 앞에: the guitar, the piano
  • 특정 장소 갈 때
    • go to the movies
    • go to the station
    • go to the bank
    • go to the theater
    • go to the airport
    • go to the post office
  • in the past, in the future
  • the same, the only, the next, the last

사용 안하는 경우

  • 운동: basketball, football, tennis
  • 과목: biology, history, marketing
  • 식사: breakfast, lunch, dinner
  • 집에 있는 경우: go home, at home
  • 출퇴근: go to work, at work

비인칭 주어

  • 시간을 말할 때: It's 5 o`clock.
  • 날짜를 말할 때: It's August 8.
  • 요일을 말할 때: It's Friday.
  • 날씨를 말할 때: It's rainy today.
  • 거리를 말할 때: It's about 10 kilometers.
  • 계절을 말할 때: It's almost spring.

소유격

  • I my mine
  • We our ours
  • You your yours
  • He his his
  • She her her
  • They their theirs
  • 소유격 뒤에 명사를 쓰지 않음.
  • 관사 없음.

재귀대명사

  • by -self: 혼자, 스스로: I've lived by myself since 2015.
  • Make yourself at home: 편히 쉬세요.

one

  • 앞서 말한 명사를 다시 말할 때 명사 대신 사용: one, ones
  • a(n)/the + ADJ + one
  • some/the + ADJ + ones
  • Which one(s) ~?: 어느 것(들) ~?

한정사

some, any

  • some, any: 사람 또는 사물의 불특정한 수나 양에 대해 말할 때 명사 앞
  • some: 주로 긍정문, yes를 기대하는 권유/요청하는 의문문
  • any: 주로 부정문, 의문문
  • someone/somebody, anyone, something, anything, somewhere, anywhere: 누군가, 무언가, 어딘가란 의미로 정확히 알 수 없는 사람, 사물, 장소에 대해 말할 때
  • someone, something: 주로 긍정문, 권유/요청하는 의문문
  • anyone, anything: 주로 부정문, 의문문

no

  • ~ 이 없다
  • no + N = not ~ any + N = none
    • I have no questions. = I don't have any questions.
  • none: 대명사라 명사와 함께 사용하지 않음.
  • no one/nobody, nothing, nowhere: 아무 ~ 도 ~ 않다.

many, much

  • many + [C] PL: 많은 ~, 긍정문, 부정문, 의문문
  • much + [U]: 많은 ~, 주로 부정문, 의문문
  • 둘 쓰는거 헷갈리므로 회화에서는 a lot of, lots of 활용하는 게 좋음.
  • 대명사로도 사용 가능
    • She grows many.
    • There isn't much.
    • You already have a lot.

few, little

  • a few + [C] PL
  • a little + [U]
  • few + [C] PL: 거의 없는, 부정문
  • little + [U]: 거의 없는, 부정문
  • A few people came: 몇 명의 사람들이 왔어.
  • Few people came: 거의 안 왔어.
  • I have a little time: 약간의 시간이 있어.
  • I have little time: 시간이 거의 없어.
  • 대명사로도 사용 가능

all, every

  • 모든 ~
  • all + [C] PL / [U]
  • every + [S]
  • all + day, week, month: ~ 종일, ~ 내내
  • every + day, week, month: ~ 마다, 매 ~
  • everyone/everybody, everything, everhwer: 모든 ~ (사람, 사물, 장소)

Both, either, neither

  • both + [C] PL: 둘 다, 두 ~ 모두
  • either + [S]: 둘 중 아무 것이나 하나, 두 ~ 중 아무 것이나 하나
  • neither + [S]: 둘 다 아닌, 두 ~ 모두 아닌

all of, most of, some of, none of

  • all of: 전부
  • most of: 대부분
  • some of: 약간
  • none of: 없음
  • all/most/some/none of: 특정한 대상에 대해 한정적으로 말할 때
    • the/my/these + N
    • it/us/you/them
    • all of the people --- All people
    • most ot these cars --- Most ccars
    • some of the songs --- some songs
    • none of the books --- No books
  • all/most/some/no + N: 일반적인 대상에 대해 말할 때
  • both/either/neither of
    • the/my/these + [C] PL
    • us/you/them

지각동사

  • 2형식, 보어(형용사) 필요
  • look + ADJ: ~해 보이다
  • smell + ADJ: ~한 냄새가 나다
  • sound + ADJ: ~하게 들리다
  • taste + ADJ: ~한 맛이 나다
  • feel + ADJ: ~하게 느끼다

부사

  • 형용사 앞에서 꾸민다.
  • 동사 앞 뒤에서 꾸민다.
  • ly 패턴이지만 형용사인 것
    • friendly
    • lovely
    • silly
    • ugly
    • lonely
  • 형용사는 사람이나 사물이 어떠한지
  • 부사는 행동이나 일이 어떻게 일어나는지

형용사면서 부사인 것

  • late: It's late / I got home late.
  • long: You have long hair / It doesn't take long.
  • hard: He is a hard worker / The baseball team is practicing hard.
  • fast: Her car is fast / She talks fast.
  • early: I had an early breakfast / Nicole arrived early for her interview.

빈도부사

  • always, usually, often, sometimes, rarely, never
    • rarely, never 는 부정문
  • 일반 동사 앞, be동사 뒤, 조동사 뒤, have/has 와 p.p. 사이

too

  • too + ADJ/ADV
  • too + ADJ + for + S.O.: ~ 에게 너무 ~ 한
  • too + ADJ + to R: ~ 하기에는 너무 ~ 한
  • too many + [C] PL: 너무 많은 ~
  • too much + **[U]: 너무 많은 ~
  • 대명사로도 사용 가능: I spent too much last month.

enough

  • ADJ/ADV + enough: 충분히 ~ 한/ ~하게
    • ADJ + enough + for + S.O: ~ 에게 충분히 ~ 한
    • ADJ + enought + to R: ~ 하기에 충분히 ~ 한
  • enough + [C] PL / [U]: 충분한 ~
    • enough + N + for + S.O: ~ 에게 충분한 ~
    • enough + N + to R: ~ 하기에 충분한 ~
  • 대명사로도 사용 가능: I have enough.

so

  • so many + [C] PL
  • so much + [U]
  • There were so many. / I've learned so much from him.

비교

  • 일반적으로 형용사/부사 뒤에 -er
  • 비교급 + than ~: ~ 보다 더 ~한 / ~ 하게
  • 긴 단어 (3음절 이상): more ADJ/ADV
  • 불규칙
    • good / better
    • bad / worse
    • far / farther

최상급

  • 일반적으로 형용사/부사 뒤에 -est
  • 2음절 이상 앞에는 most
  • 명사 없이 최상급만 사용하는 것도 가능: I'm the youngest in my family, That's the cheapest in the store.

as - as

  • as + ADJ/ADV + as: ~ 만큼 ~ 한 / ~ 하게
  • not as + ADJ/ADV + as: ~만큼 ~하지 않은 / ~ 하지 않게
    • 비교 위치 바꿔서 비교급 + Than 도 가능
  • as ~ as possible: 가능한 한 ~ 하게

전치사

장소 전치사

at

  • 직장, 학교 등: at work, at home, at school, at church, at the doctor's (office), at somebogy's (house)
  • 역, 공항: at the station, at the airport
  • 행사, 공연, 경기: at a party, at a concert, at a baseball game

in

  • 하늘, 대양 등 자연환경: in the world, in the sky, in the ocean
  • 책, 사진 등 인쇄물: in a book, in a picture, in a newspaper
  • (어떤 장소에서) ~하는 중인: in bed, in the hospital,, in prison, in jail
  • in the car, in the taxi

on

  • 거리: on 2nd Avenue, on Main Street
  • 층: on the first floor, on the 3rd floor
  • 교통수단: on the train, on the bus, on the plane

방향 전치사

  • form
  • to
  • up
  • down
  • into
  • out of
  • over
  • under
  • through
  • across
  • along
  • around
  • on
  • off: ~에서 (떨어져)
  • past: 지나서, 지나친 것은
  • toward: ~쪽으로

시간 전치사

at

  • 시각: at 10:30, at noon, at 3 o'clock
  • 식사: at breakfast, at lunch, at dinner
  • at night

on

  • 요일: on Wednesday, on Friday night
  • 평일, 주말: on weekdays, on a weekday, on weekends, on the weekend
  • 날짜, 기념일: on May 21, on my birthday, on our anniversary

in

  • 월, 계절: in January, in spring, in the summer
  • 세기, 연도: In the 19th century, in 2018
  • 오전, 오후, 저녁: in the morning, in the evening

during

  • 언제 일어났는지를 말할 때

for

  • 얼마나 오래 계속되었는지를 말할 때
  • p.p. 와 많이 씀

in

  • in + 기간: ~ 후에
  • in 10 minutes, in two hours

within

  • within + 기간: ~ 이내에
  • within 15 minutes, within four days

since

  • ~ 부터 (계속)
  • 특정 시점부터 어떤 행동이나 상황이 계속 될 때
  • p.p 와 많이 씀

by

  • (늦어도) ~ 까지
  • 늦어도 정해진 시점까지 어떤 행동이나 상황이 끝난다고 할 때

until

  • ~ 까지 계속
  • 특정 시점까지 어떤 행동이나 상황이 계속된다고 할 때

-ing

  • 전치사 뒤 -ing
  • without saying
  • about working
  • be good at singing
  • by showing

형용사 전치사 패턴

  • about
    • excited about
    • sorry about
    • sure about
  • at
    • angry at
    • mad at
    • good at
    • suprised at
  • for
    • famous for: ~으로 유명한
  • from
    • different from
  • in
    • interested in
  • of
    • afraid of
    • full of
    • proud of
    • short of: ~이 부족한
    • tired of: ~에 질린, sick and tired
  • to
    • married to: ~와 결혼한
    • simillar to: ~와 비슷한
  • with
    • busy with: ~로 바쁜
    • careful with: ~을 주의하는
    • familiar with: ~에 익숙한

동사 전치사 패턴

  • about
    • know about: ~에 대해 알고 있다
    • talk about
    • think about
    • worry about
  • at
    • look at
    • shout at: ~에게 소리치다
    • work at
  • for
    • apply for: ~에 지원하다
    • ask for: ~을 요청하다
    • look for: ~을 찾다, ~을 구하다
    • search for: ~을 찾다
    • wait for: ~을 기다리다
  • on
    • deponed on
    • spend ... on: ~에 (돈, 시간) 을 쓰다
  • to
    • belong to: ~의 것이다, ~에 속하다
    • happen to: ~에게 일어나다
    • listen to
    • talk to: ~에게 말하다
    • write to: ~에게 편지를 쓰다
  • 🚫
    • answer: ~에 답하다
    • call: ~에 전화하다
    • discuss: ~에 대해 논의하다
    • reach: ~에 도착하다, ~에 닿다

구동사

  • on
    • get on: ~에 타다
    • hold on: 기다리다
    • try on: ~을 입어보다, ~을 써보다
    • turn on: ~을 켜다
  • out
    • eat out: 외식하다
    • get out of: ~에서 내리다
    • go out: 밖으로 나가다, 외출하다
    • hand out: ~을 나눠주다
    • take out: ~을 꺼내다, ~을 빼다
  • up
    • clean up: ~을 청소하다
    • get up: 일어나다
    • wake up: 깨어나다, ~을 깨우다
    • pick up: (전화기 등)을 들다, ~을 사다
  • 대명사를 목적어로 쓰는 경우는 동사와 on/off/up 등의 사이에 쓴다.
    • take if off
    • clean them up
  • 나머지 경우는 두 패턴으로 사용 가능
    • turn your phone off
    • turn off your phone

접속사

  • 문장에 명사를 덧붙힐 때: 전치사
  • 동사를 덧붙힐 떄: to부정사
  • 문장을 덧붙힐 때: 접속사
  • because + 문장, because of + 명사
  • while: ~하는 동안
  • when, while 다음에 미래의 일을 말할 때에는 미래 시제가 아니라 현재 시제
    • What do you want to be when you grow up?
    • It'll be warm while we are on vacation.
  • before, after 뒤에 명사 또는 -ing 가능
    • before midnight.
    • before signing it.
    • after dinner?
  • since: ~ 이후로 지금까지, 이래로
  • until: ~할 때까지 (계속)
    • until 다음에 미래의 일을 이야기할 때는 현재 시제 사용
    • Please don't leave your seat until the bus stops.
  • since, until 뒤에 명사 가능
    • since thier wedding.
    • until next Thursday.

가정

  • if 현재, will/can + R: ~하면 ~할 것이다.
    • 일어날 가능성이 있는 경우
  • if 과거, would/could + R: 만약 ~한다면 ~할 텐데
    • 가능성이 없는 경우
    • 이 경우 were 를 선호함
    • If I were, If she were, If Jerry were

관계대명사

주격

  • 뒤에 동사가 나오면 주격
  • who/which/that

목적격

  • I love the food. she made it
    • I love the food which she made.
    • I love the food she made.
  • 뒤에 주어 동사가 나옴
  • 생략 가능 (관계대명사를 주어로 쓰지 않는한)

there

  • There + be동사: ~이 있다
  • There was/were: ~이 있었다.
  • There have/has been: ~가 있던 적이 있다.

4형식 동사

  • give: ~에게 ~를 주다
  • make: ~에게 ~를 만들어주다
  • send: ~에게 ~를 보내다
  • show: ~에게 ~을 보여주다
  • buy: ~에게 ~을 사주다
  • teach: ~에게 ~을 가르치다
  • give/send/show/teach + 사물 + to + 사람
  • make/buy + 사물 + for + 사람 (정석적인 느낌)

권유

  • Let's + R: (함께) ~ 하자
  • Let's not + R: ~하지 말자

감탄

  • How + ADJ
  • What (a/an) + ADJ + N

말 전달

  • said that + 과거
  • told 사람 that + 과거

동의

긍정

  • too: 긍정문
    • I do too.
    • I have too.
  • So + V + S: ~도 역시 ~하다.
    • So was I.
    • So did we.
    • So can his brother.

부정

  • either
    • He wasn't either.
    • I haven't either.
  • Neither + V + S: ~도 역시 ~하지 않다.
    • Neither do I.
    • Neither have I.

Prisma 트러블슈팅

· 약 1분

Read replica

Data sources

  • schema.prisma 파일엔 오직 하나datasource 열만 가지고 있을 수 있다.
  • 데이터 소스가 바뀌는 경우 migration.lock 파일 삭제 후 마이그레이션부터 다시 실행해야한다.

Polymorphism

아톰 기반 상태 관리와 Valtio

· 약 4분

개요

  • 한 때 redux 로 지친 상태관리를 해결하기 redux-saga 가 멋져보였고, 그 다음엔 원자 상태들의 조합이 그 해결방법으로 보였다.
  • 그래서 recoil 을 주로 사용했지만, query 나 swr를 사용한다면 로컬 UI 상태를 관리하는데에 그렇게 복잡한 기능이 필요하지 않다.
  • recoil 은 메타에서 버그의 수정만 되는 거의 버려진 프로젝트로 보인다. discussion#2171
  • 어차피 로컬 UI 상태는 pub/sub 패턴을 가지고 있기만 하면 된다.
  • 2023년의 상태관리 라이브러리의 우승자는 zustand 로 보인다.
    • 이벤트/메세징 기반 시스템을 구성한다면 Flux 패턴을 가진 해당 라이브러리를 사용하는 게 맞다.
    • 프론트엔드의 모든 기능을 액션 기반으로 동작하게 하여 에디터를 개발하던가 채팅시스템에서부터 기능호출 요청을 받아 연동한다던가하는 작업이라면 말이다.
  • 하지만 일반적인 유스케이스에서는 계단식 폼, 뱃지, 모달 등을 제외하면 Flux는 과하다.
  • 혼자 개발하는데 백엔드와 프론트엔드를 분리하고, Local, Dev, Stage, Prod 스테이지를 분리하면서 DB, 스케쥴러, 큐, API, SSR 스택도 모두 가져가려는 듯한 욕심이다.

atom

  • 번역, 리액트 상태 관리의 새로운 흐름을 보자.
  • 원자 단위면서 pub/sub, derived 가 가능하면 된다.
  • derived state 를 사용하는 것 또한 id 별로 새로운 상태가 필요한 경우가 아니라면 거의 없었다. 데이터로는 이미 query 가 그 역할을 하고 있다.
  • 아토믹 디자인, 아토믹 상태관리는 필수가 되었다.
  • 많은 개발자가 비동기적으로 개발하는 상황에서는 어떤 파일이 아톰인지, 뭘 위한 아톰인지를 기록하는 게 중요했다.
  • *.atom.ts 파일 서픽스와 *State 변수명 서픽스를 갖게 했다.

valtio

  • jotai/atom, Recoil/atom 모두 아톰기반의 상태를 관리하고 상태를 전파한다.
  • valtio/proxy 는 Proxy와 Reflect를 사용해 같은 기능을 구현했다.
  • Results for js web frameworks benchmark를 참조해보면 메모리 관리가 최악은 아니다.
  • zustand, jotai, valtio 모두 pmndrs 커뮤니티에서 다루는 오픈소스이고 같은 사람이 컨트리뷰터, 메인테이너이다.
  • valito/discussion#128 에서의 그의 의견처럼 그냥 작동한다.
  • valito/issues#141 Redux, Redux-saga 로 1년, Mobx POC, Recoil 로 2년을 보낸 나에겐 너무나 공감이 되는 코멘트였다.
  • 당분간은 여러 프로젝트를 만들어보면서 모두 이 상태관리 라이브러리를 사용해보려고한다.

10년차 프로그래머의 기술 회고

· 약 8분

프로그래머

프로그래머라는 직업은 뭘까?

  • 구분하기 좋아하는 사람들은 코더, 디벨로퍼, 엔지니어로 부를 것이고
  • 모르는 사람에겐 돈을 많이 벌게 보이거나, 달라는대로 돈을 줘야하는 직업일 것이고,
  • 고용주에겐 mechanic 으로 보일 것이다.

나에게 이 직업은 뭘까?

  • 단기기억이 장기기억으로 전환되는 시점에 불현듯 모든 걸 해결할 아이디어가 생각나 키보드를 잡거나
  • 경사하강법에 스스로를 던져 아침 새소리가 들릴 때까지 의자에서 일어나지 못하거나
  • 코딩이 너무 하고 싶은데 교양과목만 수강해야해서 가질 않았던 전공일 것이다.

요즘 나는 이렇게 이야기를 하고 다닌다.

전 인터넷에 집 짓는 사람이에요.

  • 프론트엔드요? 그거 인터리어하는 거에요.
  • 백엔드요? 그거 공구리 치고 내장공사 하는 거에요.
  • 데브옵스요? 그거 땅파고 철근 박는 거에요.
  • 보안이요? 그거 단지 내에 못 들어오게 하는거에요. 복도식 요즘 싫어하잖아요.

프로그래밍은 현실세계의 개념들을 차용해 사람이 하던 걸 자동화하기 위함인데, 이걸 깨닫는데까지 너무 오래 걸린 것 같다.

이제야 왜 많은 교수님들이 현업에서는 짬이 찰수록 기본기가 중요하다. 라고 침이 마르게 이야기를 했는지 알 것 같다.

프로그래밍

GPT로 모든 게 다 될 것 같은 시대에 프로그래밍 스킬이 중요할까?

내 대답은 아니오였다. 서비스의 아이디어가 기술 스택보다 중요한 시점이 왔다. 클로드 섀넌을 처음 듣는 사람들도 서비스를 만들 수 있게 되었고, 그 코드를 배포할 수 있는 엣지 컴퓨팅이 성행한다.

이렇게 가면 언젠가 무너질거에요 라고 설득할 수 없다. 무너지고 나서 이렇게 될 거라고 했잖아요 라고 불난 집에 기름을 부울 수도 없다.

사회 분위기가 더 그렇게 만들고 있다.

기술 스택

모든 기술은 트레이드오프이다.

새로운 것은 항상 큰 비용이 발생한다. 구성원의 숙련도와 유지보수의 관점에서 바라봐야한다.

여긴 학원이 아니야, 새로운 걸 쓰고 싶다면 개인 시간을 써서 일주일 안에 프로토타입을 보여줘. 라고 말하지만, 지금 누굴 위해 공부하고 있는데 라고 생각하는 사람도 태반이다.

소프트웨어 공학이 중요한 이유이다.

이상향

그렇다면 내가 싫어했던 건 뭘까, 부실공사인지도 모르는 건 괜찮다. 모를 수도 있지.. 하지만 부실공사라 말하지 못 하게 하는 건 내 몸에 과부하를 준다.

스트레스를 받지 않기 위해서 이상향 체크리스트를 관리하려고 한다.

  • 코드 오너 기능이 있는가? 특정 코드를 수정하면 파일별 오너에게 코드리뷰를 받을 수 있는 문화 조성이 되었는가?
  • 코드 리뷰의 평균 코멘트 수는 어느정도 되는가?
  • 브랜치 전략은 어떻게 되는가?
  • 유닛테스트가 파이프라인에서 실행되는가? 그렇다면 커버리지는 몇 퍼센트인가?
  • 실제 데이터 기반으로한 통합 테스트가 파이프라인에서 실행되는가? 그렇다면 통합 테스트에 포함하는 기준은 무엇인가?
  • E2E 테스트가 주기적으로 실행되는가? 그렇다면 관리 주체는 누구인가?
  • 테스트 드리븐으로 가기위해 케이스를 구현할 수 있는 시간을 충분히 주는가?
  • 외부 요인에 대한 카오스 테스트를 진행하는가? 재해복구에 대한 필요성을 알고 있는가?
  • 오픈소스의 관리는 어떻게 하는가? 소프트웨어의 버전 관리는 특정 사이클로 돌아가고 있는가?
  • 도커 파일과 디플로이먼트를 개발자가 직접 관리하는가? 그렇지 않다면 관리 주체는 누구인가?
  • Private network 구성을 위한 지원을 시스템팀으로부터 받을 수 있는가? 그렇지 않다면 VPC를 구성가능할 수 있는 환경이 제공되는가?
  • 코드의 퀄리티 유지를 위해 기계적으로 어떤 것을 돌리고 있는가? 린트와 정적분석 등을 진행하는가?
  • 장애 발생시 해당 장애를 모두에게 공개하고 장애보고서를 작성하는가?
  • 구성원 모두가 서비스에 대해 오너쉽을 가지고 있는가?
  • 대표하는 서비스의 SLA가 어느정도 되는가? OOM 장애 빈도 또는 500번대 장애 빈도가 어느정도 되는가?
  • SLA가 인사고과의 표준이 되는가?
  • 오너의 방향성이 모든 구성원에게 공개되는가?
  • 데이터 기반의 의사결정이 진행되는가? 로그 수집을 위한 툴은 어느 것을 사용하고 있는가?
  • 로깅 포맷은 Open Telemetry로 표준화 되어있는가? 그렇지 않다면 어떤 포맷으로 관리하고 있는가?
  • 웹 메트릭을 수집하고 있는가?
  • A/B 테스트로 기능 도입이 가능한 기반이 있는가? 그렇지 않다면 기획의 인사고과는 어떻게 하고 있는가?
  • 디자인시스템을 사용하고 있는가?
  • 스토리북을 같은 레파지토리 내에 관리하고 있는가?

yarn 에서 pnpm 으로 마이그레이션

· 약 3분

개요

  • Yarn berry 가 최고라고 유행이 돌았다.
  • 써본 결과 문제가 상당히 많았고, 결국 pnpm 을 선택하는 이유이다.

문제점

zipfs

  • 패키지를 모두 저장하고 디프도 모두 기록된다. 레파지토리 사이즈를 올리는 주범이다. 1GB 미만으로 이미지 관리가 어렵다.
  • typescript 가 올라가는 경우 yarn berry 버전을 올려줘야한다. 타입스크립트의 최신 문법을 바로 사용하고 싶으나 따라갈 수가 없다.
  • typescript, eslint, prettier 를 올릴 때마다 yarn dlx @yarnpkg/sdks vscode로 실행스크립트를 업데이트 해줘야한다.
  • 20명 이상의 프론트엔드 개발자가 붙어야하는 프로젝트에서는 이를 일일히 강제하기가 어렵다.
  • 패키지 내부 소스를 잠깐 수정해서 테스트해보는 것은 불가능하다.

opensource

  • turbo 와 같은 모노레포 툴과, prism 과 같이 postinstall 훅이 걸려있거나, create-* 과 같이 프리셋을 구성하는 환경은 node_modules 를 직접 참조한다.
  • 실행조차 안 되는 경우가 많은데, 그러면 각 레포의 열려있는 이슈를 기다려야한다. yarn berry 의 pnp 스크립트를 분석하려고 쓰는건 아니니까.
  • 이럴 경우 nodeLinker를 주고 yarn 1 버전을 쓸 때와 똑같이 사용을 해야하는데, 아무런 어드밴티지가 없다.

workspaces

  • yarn workspaces 기능은 멋지고 yarnpkg/berry 에 그 완벽한 예시가 있다.
  • 그러나 node.js 라이브러리만을 개발할 때만 멋지다. 프론트엔드용 라이브러리는 번들러가 필요한데 그 레퍼런스가 없다.

벤치마크

  • 벤치마크 성적은 데일리로 Pnpm 에서 관리한다.
  • 파이프라인 캐시랑 락 파일 켜면 감수할만한 느림이다. 일회성 느림이지 요청/응답에 대한 느림이 아니니까 어차피 프로브로 처리 가능하다.

https://pnpm.io/benchmarks

결론

  • yarn berry 의 플러그인 기능들은 멋지지만, 의존성관리에 스트레스가 더 쌓인다.