전체 글400 [HTTP] 1. 인터넷 네트워크 1. 인터넷 통신 인터넷망에서 컴퓨터들은 어떻게 통신할까? 예를 들어서 클라이언트 옆에 서버가 있으면 간단하게 케이블을 연결해서 'Hello, world!'라는 메시지를 보내면 통신이 된다. 그런데 클라이언트와 서버 사이에 인터넷망이 있으면 어떻게 될까? 클라이언트가 한국에 있고 서버가 미국에 있다면 한국에 있는 클라이언트가 'Hello, world'라는 메시지를 보내야 하는데 중간에 해저광 케이블이든 인공위성으로 보내든지 이런 수많은 중간 노드라고 하는 서버들을 걸쳐서 미국에 있는 서버에게 안전하게 메시지를 도착해야 한다. 어떤 규칙으로 미국에 있는 서버에게 안전하게 도착할 수 있는지 이해를 하려면 IP 프로토콜을 알아야 한다. 2. IP (인터넷 프로토콜) IP 주소 부여 IP 역할 지정한 IP 주소.. 2024. 1. 11. [소프트웨어 아키텍처 101] Ch.10 레이어드 아키텍처 스타일 레이어드 아키텍처(layered architecture, n티어(n-tiered) 아키텍처)는 가장 흔한 아키텍처 스타일 중 하나이다. 단순하고 대중적이면서도 비용도 적게 들어 모든 애플리케이션의 사실상 표준 아키텍처이다. 시스템을 설계하는 조직은 그 조직의 소통 구조를 그대로 복제한 듯 설계할 수밖에 없다는 콘웨이의 법칙을 떠올려보면, 레이어드 아키텍처는 애플리케이션을 개발하는 아주 자연스러운 방법이다. 그러나 레이어드 아키텍처 스타일은 묵시적 안티패턴, 우발적 아키텍처 안티패턴 등의 몇몇 아키텍처 안티패턴의 범주에 속한다. 1. 토폴로지 레이어드 아키텍처에서 내부 컴포넌트는 논리적으로 수평한 레이어들로 구성되며, 각 레이어는 애플리케이션에서 주어진 역할을 수행한다. 레이어의 개수와 유형은 특별한 제한.. 2024. 1. 11. [소프트웨어 아키텍처 101] Ch. 9 기초 아키텍처 스타일의 명칭은 숙련된 아키텍트들 사이에서 간명하게 지칭할 수 있는 이름으로 붙여 놓았다. 예를 들어, 한 아키텍트가 레이어드 모놀리스에 대해 이야기할 경우, 그의 목표는 구조적인 측면과 어떤 종류의 아키텍처 특성이 알맞는지 살펴보고 통상적인 배포 모델과 데이터 전략 등 다양한 정보를 이해하는 것이다. 따라서 아키텍트는 기초적인 아키텍처 스타일의 명칭에 익숙해져야 한다. 1. 기초 패턴 소프트웨어 아키텍처의 역사를 통틀어 끊임없이 타나타고 또 나타나는 패턴이 있는데, 이런 패턴들은 코드, 배포, 또는 아키텍처의 다른 부분을 구성하는 시야를 넓혀준다. 예를 들어, 레이어는 기능에 따라 서로 다른 관심사를 분리하는 개념으로, 소프트웨어 자체만큼이나 오래되었다. 1.1 진흙 잡탕 진흙잡탕은 요즘에는 .. 2024. 1. 11. [Java] 아스키 코드 아스키코드 (ASCII) 아스키코드는 American Standard Code for Information Interchange의 약자로서 ASCII라고 불린다. 또한 ANSI에서 만든 표준 코드체계이다 아스키는 각 문자를 7비트로 표현하므로 2^7 = 128개의 문자를 표현할 수 있다. 하단 표를 보면 0~127까지 각각의 숫자에 대응되는 값들이 표현되어 있다. 컴퓨터는 문자를 문자로 기억하지 않는다. 그 대신 숫자로 기억하고 표현한다. 예를 들면 문자 'A'는 65로, 'B'는 66으로 표현한다. 아스키 코드에는 인쇄가 불가능한 33개의 제어문자 코드와 95개의 인쇄가 가능한 문자 코드가 있다. 제어 문자 코드는 0부터 31까지 차지하며, 스페이스 문자부터 인쇄가 가능한 코드이다. 스페이스 문자는 3.. 2024. 1. 11. [Java] StringBuffer 개념과 사용법 String 클래스는 immutable(불변) 불변성을 가졌기 때문에 String 객체를 변경 시, 실제로 변경되는 것이 아닌 새로운 String 객체를 생성한다. 즉, 지정된 문자열을 변경할 수 없다. 반면 StringBuffer 클래스는 mutable(가변) 가변성을 가져, 동일산 객체 내에서 문자열 변경이 가능하다. StringBuffer/StringBuilder 클래스의 차이점 StringBuffer는 멀티쓰레드에 안전하도록 동기화되어 있다. 그래서 멀티쓰레드로 작성된 프로그램이 아닌 경우, StringBuffer의 동기화는 불필요하게 성능만 떨어트리게 된다. 그래서 StringBuffer에서 쓰레드의 동기화만 뺀 StringBuilder가 추가되었다. StringBuilder는 StringBuf.. 2024. 1. 11. [소프트웨어 아키텍처 101] Ch.8 컴포넌트 기반 사고 1. 컴포넌트 범위 개발자는 컴포넌트 개념을 다양한 팩터에 세분화하는 것이 유용하다고 생각한다. 컴포넌트는 아티팩트를 한데 묶어 필요시 중첩시켜 계층화하는, 언어에 특정한 매커니즘을 제공한다. 가장 단순한 컴포넌트는 클래스(또는 비객체 지향 언어의 함수)보다 한 단계 높은 수준의 모듈로 코드를 래핑하는 것이다. 이 단순한 래퍼를 보통 라이브러리(library)라고 한다. 컴포넌트 아키텍처에서 서브시스템이나 레이어 형태로도 나타나며, 많은 이벤트 프로세서를 위한 배포 가능한 작업 단위이다. 서비스는 또 다른 종류의 컴포넌트로서 자신의 주소 공간에서 실행되며, TCP/IP 같은 저수준 네트워크 프로토콜이나 REST, 메시지 큐 같은 고수준 포맷을 통해 통신한다. 컴포넌트는 아키텍처의 근본적인 모듈성을 구성하.. 2024. 1. 11. 이전 1 ··· 38 39 40 41 42 43 44 ··· 67 다음