개발 공부를 하다 보면 자주 마주치는 단어 중 하나가 **"컨텍스트(context)"**입니다. 어렵게 느껴지지만, 우리 일상 속에서 이미 자주 경험하고 있는 개념입니다.
여러분이 카페에 들어가서 "아이스 아메리카노 하나 주세요"라고 말한다고 해보겠습니다. 이때 점원은 여러분의 상태나 주변 정보를 바탕으로 행동합니다. 예를 들어:
이 모든 정보들이 대화의 컨텍스트입니다. 즉, 단순히 말로 표현하지 않았더라도 상황(context) 속에서 유추할 수 있는 정보들 입니다.
소프트웨어에서의 컨텍스트도 이와 비슷합니다. 어떤 작업이나 상태를 처리하기 위해 필요한 최소한의 정보를 뜻합니다. 예를 들어:
이런 정보들을 컨텍스트라고 부르고, 이 정보들을 기준으로 UI나 로직이 다르게 동작할 수 있습니다.
운영체제에서는 여러 프로세스가 CPU를 번갈아 사용할 수 있도록 하는데, 이때 각각의 작업 상태(레지스터, 메모리 위치 등)를 저장하고 불러오는 과정을 **컨텍스트 스위칭(context switching)**이라고 합니다.
HTTP 통신을 할 때도 컨텍스트가 존재합니다. 대표적인 예가 HTTP Header입니다. 예를 들어:
Authorization: Bearer eyJhbGciOi...
Accept-Language: ko-KR
이런 헤더는 요청을 보낼 때 클라이언트의 상태나 조건을 서버에 전달하는 컨텍스트 정보입니다.
React에서는 Context API를 통해 컴포넌트 트리 전체에 데이터를 쉽게 전달할 수 있습니다. props drilling 없이도 여러 컴포넌트에서 공유해야 하는 전역적인 상태(예: 테마, 로그인 정보)를 관리할 수 있습니다.
const ThemeContext = createContext("light");
function App() {
return (
<ThemeContext.Provider value="dark">
<Toolbar />
</ThemeContext.Provider>
);
}
여기서 ThemeContext는 현재 UI의 상태에 따라 다르게 렌더링되도록 돕는 컨텍스트 저장소 역할을 합니다.
정리하자면, 컨텍스트는 어떤 작업을 하기 위해 필요한 주변 정보입니다. 꼭 IT 용어가 아니라도, 우리는 일상에서 컨텍스트를 바탕으로 대화하고, 판단하고, 행동하고 있습니다.